3

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

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

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

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

我想要这个在标准输出中:) 这可能以某种简单的方式吗?IPython 也是同样的问题。这个问题有助于编写一个小的“how-to”来使用 Python/IPython 解释器

4

4 回答 4

3

可以使用该语句执行一行代码(以下是 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."

我应该注意到它似乎还不能很好地处理多行语句(因为它正在单独评估每一行)。

于 2012-06-18T07:47:10.157 回答
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

于 2012-06-18T09:33:47.530 回答
1

根据您用于创建操作指南的工具,您可能还想使用Sphinx,它是一种在 Python 中生成文档的工具。它能够输出多种格式,尤其是 HTML 和 PDF。它有一个非常好的doctest模块,允许将 Python 指令放入您的文档中。它们将在您编译文档时运行,并且将显示说明及其结果。

于 2012-06-18T07:51:42.173 回答
0

这应该是交互式嵌入和使用 Python shell(ActiveState 代码配方)的良好开端。

对于 IPython,您可能可以使用IPShellEmbed

于 2012-06-18T07:50:44.123 回答