Bonjour,
le script suivant permet de voir la progression d'un script très basique sans identation :
Le problème est que pour le script suivant, cela ne fonctionne plus à cause de la boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #!/usr/bin/env python #coding=utf-8 import sys class str_stdout: def __init__(self): self.stdout = sys.stdout self.buffer = '' sys.stdout = self def write(self, str): self.buffer += str def __str__(self): return self.buffer def close(self): sys.stdout = self.stdout import code text = [] console = code.InteractiveConsole() try: with open("exemple.py") as f: for l in f: l = l.rstrip() if l: tt = str_stdout() text.append(">>> " + l) console.push(l) tt.close() tt = str(tt).rstrip() # Pour éviter de récupérer des lignes vides. if tt: text.append(tt) except: print 'ERROR' text = '\n'.join(text) print text.strip()
Y aurait-il un moyen relativement simple de contourner ce problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #!/usr/bin/env python #coding=utf-8 for a in range(5): print a print '4'
Peut-être suffirait-il de mettre tout le bloc for dans la variable l pour console.push(l) (je n'ai pas Python pour essayer) ?
Une méthode un peu brutalequi me vient à l'esprit serait de créer des fichiers Python intermédiaires qui seraient obtenus avec la ligne No1, puis avec les lignes N°1 et 2, puis ensuite avec les lignes 1 à 3,...etc. On lancerait alors via un processus les fichiers obtenus (du plus petit au plus grand) en récupérant les sorties. Ne serait affiché que ce qui ne produirait pas d'erreur, en prenant soin de ne garder que les nouvelles lignes.
En espérant avoir été clair.
Toute info. est la bienvenue.
Partager