是否有相当于使用 rlwrap 调用脚本的 python (3) 本机?

art*_*bot 5 python python-3.x rlwrap

我在用着input()在 Python (3) CLI 脚本中向用户询问命令。

\n\n

我希望他们能够按\xe2\x86\x91重用旧命令。就此而言,我希望他们也能够进行其他基本的线条编辑。

\n\n

我可以通过运行来获得这些功能rlwrap myscript.py,但我不想运行包装脚本。(是的,我可以设置一个别名,但如果可能的话,我想将其封装在脚本中)

\n\n

是否有一个库可以启用此功能(例如提供历史/编辑感知版本input())或者我需要从头开始?

\n

art*_*bot 3

我很感谢作为评论发布的答案。我尝试了@furas 的建议,看起来效果很好。这是一个片段,可以帮助其他通过搜索来到这里的人。

from prompt_toolkit import prompt       
from prompt_toolkit import PromptSession
from prompt_toolkit.history import FileHistory
from os.path import expanduser

myPromptSession = PromptSession(history = FileHistory(expanduser('~/.myhistory')))

while True:
  userInput = myPromptSession.prompt('Enter command')
  print("{}, interesting.".format(userInput))

Run Code Online (Sandbox Code Playgroud)

prompt是主要的执行函数,但是除非您使用PromptSession. 如果不使用该history选项,历史记录将保留在内存中并在程序退出时丢失。

https://python-prompt-toolkit.readthedocs.io/en/master/index.html