È possibile fare in modo che Python interpreti uno script riga per riga e generi output come da una shell interattiva?[duplicare]

StackOverflow https://stackoverflow.com//questions/25088718

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?

È stato utile?

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
scroll top