Это можно сделать с помощью InteractiveConsole
в модуле code
, и он поддерживает мультилинии :
import code
console = code.InteractiveConsole()
more_input = False
with open('example.py') as source:
for line in source:
if not more_input:
print('>>> ' + line.rstrip())
else:
print('... ' + line.rstrip())
more_input = console.push(line)
Если вам интересно, как работает флаг more_input
, взгляните на документ :
InteractiveConsole.push(line):
[...] Возвращаемое значение равно True , если требуется больше ввода, False , если с линией обращались каким-либо образом (это то же самое, что runsource()
).
Я протестировал его на example.py
, который выглядит следующим образом:
x = 1
x
y = 2
y + x
a = (
1,
2,
3
)
print(a)
, и результат был:
>>> x = 1
>>> x
1
>>> y = 2
>>> y + x
3
>>>
>>> a = (
... 1,
... 2,
... 3
... )
>>> print(a)
(1, 2, 3)