我有一个简单的 python 脚本(比如 simple.py),比如
a = 5
b = a + a
print(b)
但我想要以下内容:输出结果,就好像这些命令在解释器中执行一样,比如
>>> a = 5
>>> b = a + a
>>> print(b)
10
我想要这个在标准输出中:) 这可能以某种简单的方式吗?IPython 也是同样的问题。这个问题有助于编写一个小的“how-to”来使用 Python/IPython 解释器
可以使用该语句执行一行代码(以下是 Python 2 代码,如果你希望它是 Python 3 exec
,请将 print 语句更改为):print()
import sys
def run(filename):
with open(filename) as f:
for line in f:
print ">>> ", line
exec line
if __name__ == "__main__":
try:
run(sys.argv[1])
except KeyError:
print "You should pass one filename as parameter."
我应该注意到它似乎还不能很好地处理多行语句(因为它正在单独评估每一行)。
我从@Simeon 的代码修改。
将下面的代码另存为theprinter.py
import sys
if __name__ == '__main__':
c = {}
for line in sys.stdin:
sys.stdout.write('>>> %s' % line)
exec(line, c)
用法:cat yourscript.py | python theprinter.py
这应该是交互式嵌入和使用 Python shell(ActiveState 代码配方)的良好开端。
对于 IPython,您可能可以使用IPShellEmbed。