È possibile fare in modo che Python interpreti uno script riga per riga e generi output come da una shell interattiva?[duplicare]
-
02-01-2020 - |
Domanda
Considerando la seguente sessione di shell interattiva.
Python 2.7.5+ (default, Feb 27 2014, 19:37:08)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 1+1
2
>>> 2+5
7
>>> "foo"
'foo'
>>>
Osserva come, dopo ogni riga, l'interprete trasmetterà il risultato alla console.
Se inserisco gli stessi tre comandi in uno script Foo.py
senza dichiarazioni stampate, non verrà generato alcun output.
Esiste un modo per forzare l'interprete Python a generare il file stessa uscita come accadrebbe in modalità interattiva senza modificare il codice per inserire manualmente le istruzioni print?
Soluzione
import code
console = code.InteractiveConsole()
prompt = '>>>'
source = '''
1 + 1
2+5
"foo"
x = 1
x
y = (2+
3)
y + x
'''.splitlines()
for line in source:
print('{p} {l}'.format(p=prompt, l=line.rstrip()))
prompt = '...' if console.push(line) else '>>>'
cede
>>>
>>> 1 + 1
2
>>> 2+5
7
>>> "foo"
'foo'
>>> x = 1
>>> x
1
>>> y = (2+
... 3)
>>> y + x
6
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow