Python脚本&标准输出

时间:2012-06-18 07:40:48

标签: python ipython

我有一个简单的python脚本(比如simple.py),比如

a = 5
b = a + a
print(b)

但我想要以下内容:输出结果,好像这些命令是在解释器中执行的,比如

>>> a = 5
>>> b = a + a
>>> print(b)
10

我想在stdout :) 这有可能以某种简单的方式吗? 对于IPython也是同样的问题。 这个问题对于编写一个使用Python / IPython解释器的小“操作方法”很有帮助

4 个答案:

答案 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