是否有 python (3) 本机等效于使用 rlwrap 调用脚本?
Is there a python (3) native equivalent to invoking the script with rlwrap?
我正在使用 input()
向用户询问 Python (3) CLI 脚本中的命令。
我希望他们能够按 ↑ 来重用旧命令。就此而言,我希望他们也能够进行其他基本的行编辑。
我可以通过 运行 宁 rlwrap myscript.py
获得这些功能,但我宁愿不必 运行 包装脚本。 (是的,我可以设置一个别名,但如果可能的话,我想将它封装在脚本中)
是否有库可以启用此功能(例如,提供 input()
的 history/editing 感知版本)或者我是否需要从头开始?
非常感谢作为评论发布的答案。我尝试了@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))
prompt
是主要的执行函数,但除非使用 PromptSession
,否则您不会获得任何历史记录。如果您不使用 history
选项,那么历史将保留在内存中并在程序退出时丢失。
https://python-prompt-toolkit.readthedocs.io/en/master/index.html
我正在使用 input()
向用户询问 Python (3) CLI 脚本中的命令。
我希望他们能够按 ↑ 来重用旧命令。就此而言,我希望他们也能够进行其他基本的行编辑。
我可以通过 运行 宁 rlwrap myscript.py
获得这些功能,但我宁愿不必 运行 包装脚本。 (是的,我可以设置一个别名,但如果可能的话,我想将它封装在脚本中)
是否有库可以启用此功能(例如,提供 input()
的 history/editing 感知版本)或者我是否需要从头开始?
非常感谢作为评论发布的答案。我尝试了@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))
prompt
是主要的执行函数,但除非使用 PromptSession
,否则您不会获得任何历史记录。如果您不使用 history
选项,那么历史将保留在内存中并在程序退出时丢失。
https://python-prompt-toolkit.readthedocs.io/en/master/index.html