如何从python代码生成文档,看起来像;python外壳输出“;
我想运行一些python代码,例如example.py。如何从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 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:这意味着你会接受它吗?:)当然,因为这是最好的您可以改进小代码样式-随着数据的出现顺序流动(简化可读性)-将标志重命名为含义(可读性)…:)我给一些时间给别人机会。