script
的东西,我会得到太多的stdout噪音。我真的不需要将所有对象都pickle起来——虽然如果有一个能够这样做的解决方案,那就好了。理想情况下,我只需要留下一个运行与我创建的交互式脚本相同的脚本,我可以删除我不需要的部分。是否有一个可以实现这个功能的软件包或DIY方法?script
的东西,我会得到太多的stdout噪音。我真的不需要将所有对象都pickle起来——虽然如果有一个能够这样做的解决方案,那就好了。理想情况下,我只需要留下一个运行与我创建的交互式脚本相同的脚本,我可以删除我不需要的部分。是否有一个可以实现这个功能的软件包或DIY方法?关于Linux,可以使用script
命令记录整个会话过程。它是util-linux
包的一部分,所以大多数Linux系统中都应该具备此功能。你可以创建一个别名或函数来调用script -c python
并将其保存到一个typescript
文件中。例如,下面是一个这样的文件。
$ cat typescript
Script started on Sat 14 May 2016 08:30:08 AM MDT
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Hello Pythonic World'
Hello Pythonic World
>>>
Script done on Sat 14 May 2016 08:30:42 AM MDT
script
会记录所有内容,包括换行、退格等。因此,您可能需要使用col
来清理输出(请参见Unix&Linux Stackexchange上的这篇文章)。还有另一种选择——pyslice。 在“wxpython 2.8文档演示和工具”中,有一个名为“pyslices”的开源程序。
您可以像使用编辑器一样使用它,它还支持像控制台一样使用——执行每行代码就像是一个交互式解释器,并立即回显结果。
当然,所有代码块和每个块的结果都会自动记录到一个txt文件中。
结果会直接记录在相应的代码块后面,非常方便。
在 IPython 中,我首先使用
In [2]: %hist
要查看我的过去代码。我选择要保存的块,然后使用%%file
魔法将其粘贴到文件my_file.py
中(缩写为%%writefile
)
In [3]: %%file my_file.py
...: # paste code here
...:
...:
-a
:%%file -a my_file.py
。In [5]: !ls -l my_file.py
In [6]: !vi my_file.py
~/.pythonhist
中。$ cp ~/.pythonhist mycommands.py
然后编辑该文件以清理它,并将其放置在Python路径下(全局或虚拟环境的site-packages,当前目录,提及*.pth,或其他方式)。
要将命令包含到您的shell中,只需从保存的文件中导入它们:
>>> from mycommands import *
在XUbuntu上保存输入和输出:
终端
,并在下拉菜单中查找保存内容
我发现这样可以保存输入和输出,一直回溯到我打开终端的时候。这不是ipython特定的,也适用于从终端窗口运行的ssh会话或其他任务。
-f
选项用于强制文件替换,len(IN)-1
显示IPython中当前输入提示,允许您编程方式保存整个会话。我想提出另一种在Linux上通过tmux维护Python会话的方法。您运行tmux,附加到您打开的会话(如果直接打开后没有附加)。执行Python并进行任何操作。然后从会话中分离。从tmux会话中分离不会关闭会话。会话仍然保持打开状态。
这种方法的优点: 您可以从任何其他设备附加到此会话(如果您可以通过ssh连接到您的计算机)
这种方法的缺点: 此方法不会释放已打开的Python会话使用的资源,直到您实际退出Python解释器。
spacemacs
和带有 python-layer
的 ipython
的人来说,由于后台不断工作的自动补全命令(例如:save magic),会产生大量不必要的输出。len(all_suffixes)
';'.join(__PYTHON_EL_get_completions('''len'''))
';'.join(__PYTHON_EL_get_completions('''all_substa'''))
len(all_substantives_w_suffixes)
';'.join(__PYTHON_EL_get_completions('''len'''))
';'.join(__PYTHON_EL_get_completions('''all'''))
';'.join(__PYTHON_EL_get_completions('''all_'''))
';'.join(__PYTHON_EL_get_completions('''all_w'''))
';'.join(__PYTHON_EL_get_completions('''all_wo'''))
';'.join(__PYTHON_EL_get_completions('''all_wor'''))
';'.join(__PYTHON_EL_get_completions('''all_word'''))
';'.join(__PYTHON_EL_get_completions('''all_words'''))
len(all_words_w_logograms)
len(all_verbs)
spc f s
。#gk-test.py or anything else would do
try: # use the try loop only if you haven't created the history file outside program
username = open("history.txt").readline().strip("\n")
user_age = open("history.txt").readlines()[1].strip("\n")
except FileNotFoundError:
username = input("Enter Username: ")
user_age = input("Enter User's Age: ")
open("history.txt", "w").write(f"{username}\n{user_age}")
#Rest of the code is secret! try it your own!
我要感谢所有喜欢我的评论的人!谢谢你们阅读这篇文章!