Есть ли python (3) собственный эквивалент вызова сценария с помощью rlwrap? - PullRequest
0 голосов
/ 07 января 2020

Я использую input(), чтобы попросить пользователя ввести команду в Python (3) скрипте CLI.

Я бы хотел, чтобы он мог нажимать повторно использовать старые команды. В связи с этим я бы хотел, чтобы они могли выполнять и другие базовые c строки редактирования.

Я могу получить эти функции, запустив rlwrap myscript.py, но я бы предпочел не запускать скрипт-обертку , (да, я мог бы создать псевдоним, но я хотел бы инкапсулировать его в сценарии, если это возможно)

Есть ли библиотека, позволяющая это сделать (например, предоставить версию input(), поддерживающую историю / редактирование) или нужно начинать с нуля?

1 Ответ

1 голос
/ 08 января 2020

Я благодарен за ответы, опубликованные в виде комментариев. Я попробовал предложение @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

...