如何在python文本文件中编写ipython命令的输出?

时间:2012-11-02 16:19:25

标签: ipython

我想将以下ipython命令的输出捕获到文件中: 命令和输出区域如下:

`decoder.get_hyp()`

WARNING: "ngram_search.c", line 1000: </s> not found in last frame, using ++NOISE++ instead
INFO: ngram_search.c(1046): lattice start node <s>.0 end node ++NOISE++.171
INFO: ps_lattice.c(1225): Normalizer P(O) = alpha(++NOISE++:171:185) = -2003082
INFO: ps_lattice.c(1263): Joint P(O,S) = -2036704 P(S|O) = -33622
Out[7]: ('WELCOME TO MY TALK', '000000000', -36704586)

我想在我的文件中仅捕获“欢迎来到我的谈话”部分。

4 个答案:

答案 0 :(得分:32)

使用IPython魔术函数store

%store foo >> a.txt # Append value of foo to file a.txt

答案 1 :(得分:26)

按照以下步骤操作:

%save file_name.py _oh[7]

PS:一些额外的有用命令:

%save file_name.py _

'_'指的是之前的输出。

或者你可以:

%save file_name.py _oh[i]

'i'指的是输出历史编号,您可以先看到输出:

_oh

答案 2 :(得分:1)

IPython捕获变量_(下划线)中最后一个命令的值(输出)。

%edit some_variable

将在编辑器中打开变量的值。

因此,“%edit _”应该允许您编辑并保存最后一个命令的值。

请参阅the History section of the IPython docs

要了解%edit magic函数的可能参数,请在ipython提示符下键入以下内容:

%edit?

答案 3 :(得分:0)

%%capture cell magic保存运行命令的stdout / stderr输出,如果这是你需要的。这是使用语法:

%%capture [--no-stderr] [--no-stdout] [--no-display] [output]

而且,这是一个用法示例:

In [1]: %%capture my_print_output
    ...: print('test')
    ...:

In [2]: my_print_output
Out[2]: <IPython.utils.capture.CapturedIO at 0x7f2efa2c12d0>

In [3]: test_output.show()
test

输出对象是IPython.utils.capture.CapturedIO的一个实例,它有一个用于访问stdout / stderr或组合输出的简洁接口。