如何从python代码生成文档,看起来像;python外壳输出“;

如何从python代码生成文档,看起来像;python外壳输出“;,python,documentation,Python,Documentation,我想运行一些python代码,例如example.py。 我不想手动将代码输入Python shell,因为它的速度很慢: x = 1 x y = 2 y + x y 我希望实现这样的输出: >>> x = 1 >>> x 1 >>> y = 2 >>> y + x 3 >>> y 2 这看起来很容易回答,但很难找到如何做到这一点 由于存在一些问题,这不是记录的模式,而是用于记录/测试代码片段/示例的“

我想运行一些python代码,例如example.py。
我不想手动将代码输入Python shell,因为它的速度很慢:

x = 1
x
y = 2
y + x
y
我希望实现这样的输出:

>>> x = 1
>>> x
1
>>> y = 2
>>> y + x
3
>>> y
2
这看起来很容易回答,但很难找到如何做到这一点


由于存在一些问题,这不是记录模式,而是用于记录/测试代码片段/示例的“大型代码”

假设它在当前目录中:

execfile('example.py')

参见文档。

我不知道怎么做。但您不必手动输入它-只需执行复制和粘贴…

您可以尝试以下操作:

f = open('example.py', 'r')

for line in f:
  print('>>> ' + line)
  try:
    print(eval(line))
  except SyntaxError:
    exec(line)
您可以使用模块中的进行此操作,并且它支持多行

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\u input
标志是如何工作的,请查看:

InteractiveConsole.push(行):

[…]如果需要更多输入,则返回值为True;如果以某种方式处理该行,则返回值为False(这与
runsource()
相同)

我已经在一个
示例.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)

为什么不把你的代码写成真正的Python而不是依赖shell的交互呢?为什么不使用print呢?或者试试ironpython。您还可以在shell中编写它,然后将shell文本转换为python文件?你要做多少?您正在用Python编写教程吗?如果是这样,你只需要做一次,你就完成了。请解释此用法。@Lattyware,因为这种格式很好,请提供简单的示例。@robertking不希望打印,因为这样做会降低准备示例的速度。这不会发出
>>…
行。注意多行字符串,但这对他的代码有效。您确实需要这样做:
global\u=评价线;如果u不是None:打印(u)
以稍微接近REPL行为。@robertking确定它不支持多行,但它看起来是最好的解决方案。如果代码是多行的,则不起作用,如果你做了很多代码更新,则速度较慢-需要重复C&P。@Chameleon:这意味着你会接受它吗?:)当然,因为这是最好的您可以改进小代码样式-随着数据的出现顺序流动(简化可读性)-将标志重命名为含义(可读性)…:)我给一些时间给别人机会。