我有一个简单的python脚本(比如simple.py),比如
a = 5
b = a + a
print(b)
但我想要以下内容:输出结果,好像这些命令是在解释器中执行的,比如
>>> a = 5
>>> b = a + a
>>> print(b)
10
我想在stdout :) 这有可能以某种简单的方式吗? 对于IPython也是同样的问题。 这个问题对于编写一个使用Python / IPython解释器的小“操作方法”很有帮助
答案 0 :(得分:3)
您可以使用exec
语句执行一行代码(以下是Python 2代码,如果您希望它是Python 3,则将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."
我应该注意,它似乎还没有很好地处理多行语句(因为它分别评估每一行)。
答案 1 :(得分:2)
我修改了@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
答案 2 :(得分:1)
根据您用来创建操作方法的工具,您可能还需要使用Sphinx,这是一种用Python生成文档的工具。它能够输出多种格式,特别是HTML和PDF。它有一个非常好的doctest模块,允许将Python指令放在您的文档中。它们将在您编译文档时运行,并将显示说明及其结果。
答案 3 :(得分:0)
这应该是以交互方式嵌入和使用Python shell的良好开端(ActiveState code recipe)。
对于IPython,您可以使用IPShellEmbed。