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]
-
02-01-2020 - |
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?
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