当前位置: 首页 > 面试题库 >

给Python终端一个持久的历史

海雪松
2023-03-14
问题内容

有没有办法告诉交互式Python Shell在会话之间保留其执行命令的历史?

在会话运行时,执行完命令后,我可以向上箭头访问这些命令,我​​只是想知道是否存在某种方式可以保存一定数量的这些命令,直到下次使用Python Shell时。

这将非常有用,因为我发现自己在上次会话结束时使用的会话中重用了命令。


问题答案:

当然可以,只需一个小的启动脚本。从交互式输入编辑及历史替换在Python教程:

# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it:  "export PYTHONSTARTUP=~/.pystartup" in bash.

import atexit
import os
import readline
import rlcompleter

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    import readline
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
del os, atexit, readline, rlcompleter, save_history, historyPath

从Python
3.4开始,交互式解释器开箱即用地支持自动完成和历史记录:

现在,在支持的系统上的交互式解释器中,默认情况下启用了制表符完成功能readline。默认情况下,历史记录也处于启用状态,并且被写入文件(或从文件中读取)~/.python- history



 类似资料:
  • 问题内容: 我无法理解为什么Java迫使我将()声明为final。这是为什么? 问题答案: 这是一个内部类,传递给它-内部类外部引用的所有变量都需要声明为final才能在内部类中使用。这是因为本地类实例必须维护变量的单独副本,因为它可能会使函数失效。为了避免在相同范围内混淆两个具有相同名称的可修改变量,该变量被强制为不可修改。 只需在调用使用内部类的方法之前执行,然后在内部使用即可。

  • 我正在尝试将端口统一示例改编为我的代码库。我认为我遇到的问题是,客户端之间的通道保持打开状态 我在端口统一示例中看到的问题是,我的客户机一直预先挂起每个请求的魔法字节,但服务器端通道删除了端口统一处理程序,即在确定消息为有效协议消息后传入的第一个请求。通道上的后续消息(包含来自客户端的前缀magic字节)无法处理,因为统一处理程序不再在管道中使用magic字节,从而导致消息格式错误。 我能够通过将

  • 问题内容: 有没有办法在python中“持久”进行子过程调用?我正在调用一个程序,该程序需要一段时间才能加载多次。因此,如果我不关闭程序就可以保持打开状态并与之通信,那将是很好的。 我的python脚本的卡通版本如下所示: 我需要分别处理每个文本,因此将它们全部合并到一个大文本文件中并进行一次处理不是一种选择。 最好,如果有这样的选择 我可以让流程保持开放状态,对此我将非常感激。 问题答案: 您可

  • 我的CN1应用程序在这里生成文件filesystemstorage.getinstance().getapphomePath()。我可以正确地读/写那里的文件。 此文件夹名类似于:- 我如何保证这部分保持不变?谢谢你的帮助。

  • 问题内容: 我有这种实体: 文件| n ..至..1 | DocumentType | 1 ..至.. n | PropertyType | 1 ..至.. n | 文件属性 我只是尝试删除一个文档,例如:entityManager.remove(document); 但触发错误: 16:45:51,499错误[[Seam Resource Servlet]] Servlet的Servlet.se

  • 问题内容: 我已经成功用hibernate写了我的第一个主要的孩子例子。几天后,我再次使用它并升级了一些库。不知道我做了什么,但是我再也无法使它运行了。有人可以帮助我找出返回以下错误消息的代码中的错误吗: hibernate映射: 编辑: InvoiceManager.java 发票.java InvoiceItem.java 编辑: 从客户端发送的JSON对象: 编辑: 一些详细信息: 我试图通