I find myself frequently using Python's interpreter to work with databases, files, etc -- basically a lot of manual formatting of semi-structured data. I don't properly save and clean up the useful bits as often as I would like. Is there a way to save my input into the shell (db connections, variable assignments, little for loops and bits of logic) -- some history of the interactive session? If I use something like script I get too much stdout noise. I don't really need to pickle all the objects -- though if there is a solution that does that, it would be OK. Ideally I would just be left with a script that ran as the one I created interactively, and I could just delete the bits I didn't need. Is there a package that does this, or a DIY approach?


当前回答

此外,reinteraction为Python会话提供了一个类似笔记本的界面。

其他回答

一些评论询问如何一次保存所有的IPython输入。对于IPython中的%save魔术,您可以以编程方式保存所有命令,如下所示,以避免提示消息,也避免指定输入数字。 currentLine = len(In)-1 %save -f my_session 1-$currentLine

f选项用于强制替换文件,len(IN)-1显示IPython中的当前输入提示符,允许您以编程方式保存整个会话。

我不得不努力寻找答案,我对iPython环境非常陌生。

这是可行的

如果你的iPython会话是这样的

In [1] : import numpy as np
....
In [135]: counter=collections.Counter(mapusercluster[3])
In [136]: counter
Out[136]: Counter({2: 700, 0: 351, 1: 233})

你想保存从1到135的行,然后在同一个ipython会话上使用这个命令

In [137]: %save test.py 1-135

这将把你所有的python语句保存在当前目录下的test.py文件中(你启动ipython的地方)。

还有另一种选择——耻骨瓣切除术。 在“wxpython 2.8文档演示和工具”中,有一个名为“pyslices”的开源程序。

你可以像编辑器一样使用它,它也支持像控制台一样使用----,像交互式解释器一样执行每一行,具有即时回显。

当然,所有的代码块和每个块的结果都会自动记录到一个TXT文件中。

结果被记录在相应代码块的后面。非常方便。

我再提一个建议: 世爵

它有历史日志和变量资源管理器。如果你用过MatLab,你就会发现其中的相似之处。

来自安德鲁·琼斯的网站(存档):

import readline
readline.write_history_file('/home/ahj/history')