Ist es möglich, Python dazu zu bringen, ein Skript Zeile für Zeile zu interpretieren und eine Ausgabe wie von einer interaktiven Shell zu generieren?[Duplikat]

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

Frage

Betrachten wir die folgende interaktive Shell-Sitzung.

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'
>>> 

Beobachten Sie, wie der Interpreter nach jeder Zeile das Ergebnis an die Konsole zurückgibt.

Wenn ich dieselben drei Befehle in ein Skript einfüge Foo.py ohne Druckanweisungen, es wird keine Ausgabe generiert.

Gibt es eine Möglichkeit, den Python-Interpreter zum Generieren zu zwingen? gleiche Ausgabe wie im interaktiven Modus ohne den Code zu ändern, um Druckanweisungen manuell einzufügen?

War es hilfreich?

Lösung

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 '>>>'

Erträge

>>> 
>>> 1 + 1
2
>>> 2+5
7
>>> "foo"
'foo'
>>> x = 1
>>> x
1
>>> y = (2+
...      3)
>>> y + x
6
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top