Подтвердить что ты не робот

Дайте терминалу Python постоянную историю

Есть ли способ сообщить интерактивной оболочке Python сохранить историю выполненных команд между сеансами?

Пока сеанс запущен, после выполнения команд я могу стрелять вверх и получать доступ к указанным командам, мне просто интересно, есть ли способ сохранить определенное количество этих команд до следующего использования оболочка Python.

Это было бы очень полезно, так как я нашел повторное использование команд в сеансе, которые я использовал в конце последнего сеанса.

4b9b3361

Ответ 1

Конечно, вы можете с небольшим запуском script. Из Интерактивное редактирование ввода и замещение истории в учебнике 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.

Ответ 2

Используйте IPython.

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