Я часто использую интерпретатор Python для работы с базами данных, файлами и т. Д. - в основном, много ручного форматирования полуструктурированных данных. Я неправильно сохраняю и очищаю полезные фрагменты так часто, как хотелось бы. Есть ли способ сохранить мой ввод в оболочку (соединения БД, назначения переменных, немного для циклов и биты логики) - какая-то история интерактивного сеанса? Если я использую что-то вроде этого, script
я получаю слишком много шума. Мне не нужно травить все объекты - хотя, если есть решение, которое делает это, все будет в порядке. В идеале у меня остался бы сценарий, который запускался как созданный мной в интерактивном режиме, и я мог бы просто удалить ненужные фрагменты. Есть пакет, который делает это, или подход DIY?
ОБНОВЛЕНИЕ : я действительно поражен качеством и полезностью этих пакетов. Для тех с подобным зудом:
- IPython - должен был использовать это целую вечность, вид того, что я имел в виду
- реинтеграция - очень впечатляет, я хочу узнать больше о визуализации, и это, кажется, будет светить там. Что-то вроде настольного приложения gtk / gnome, которое отображает графики как встроенные. Представьте себе гибридную оболочку + графический калькулятор + мини-затмение. Источник распространения здесь: http://www.reinteract.org/trac/wiki/GettingIt . Отлично работает на Ubuntu, интегрируется в рабочий стол gnome, а также в установщики Windows и Mac.
- bpython - очень круто, множество приятных функций, автозаполнение (!), перемотка назад, одно нажатие клавиши, сохранение в файл, отступы, отлично выполнено. Исходный дистрибутив Python, вытащил пару зависимостей из sourceforge.
Я обращен, они действительно заполняют потребность между переводчиком и редактором.
источник
In[48]
). Такsave filename 1-48
спас бы всю вашу сессию.%load my_useful_session
http://www.andrewhjon.es/save-interactive-python-session-history
источник
Eсть способ сделать это. Сохраните файл в
~/.pystartup
...а затем установите переменную среды
PYTHONSTARTUP
в вашей оболочке (например, в~/.bashrc
):Вы также можете добавить это, чтобы получить автозаполнение бесплатно:
Обратите внимание, что это будет работать только на * nix системах. Как readline доступен только на платформе Unix.
источник
readline.parse_and_bind('tab: complete')
работает, если вы используете MacPorts Python.Если вы используете IPython, вы можете сохранить в файл все свои предыдущие команды, используя волшебную функцию % history с параметром -f , pe:
источник
save
магию. Это было очень полезно%history -g -f full_history.py
для получения истории всех сессий, а не только текущей. Смотрите также: документация для% history .После установки Ipython и открытия сеанса Ipython с помощью команды:
в командной строке просто запустите следующую «магическую» команду Ipython для автоматической регистрации всего сеанса Ipython:
Это создаст файл с уникальным именем .py и сохранит ваш сеанс для последующего использования в качестве интерактивного сеанса Ipython или для использования в выбранных вами сценариях.
источник
Кроме того, реинтеграция дает вам подобный ноутбуку интерфейс к сеансу Python.
источник
reinteract
теперь заменен записной книжкой IPython и QtConsole.В дополнение к IPython, аналогичная утилита bpython имеет функцию «сохранить код, который вы ввели в файл»
источник
Мне пришлось изо всех сил, чтобы найти ответ, я был очень новым для среды iPython.
Это будет работать
Если ваша сессия iPython выглядит так
Вы хотите сохранить строки от 1 до 135, затем в том же сеансе ipython используйте эту команду
Это сохранит все ваши операторы python в файле test.py в вашем текущем каталоге (где вы инициировали ipython).
источник
Существует% истории магии для печати и сохранения истории ввода (и, возможно, вывода).
Чтобы сохранить текущий сеанс в файл с именем
my_history.py
:История IPython хранит как введенные вами команды, так и результаты, которые он выдает. Вы можете легко выполнять предыдущие команды с помощью клавиш со стрелками вверх и вниз или получать доступ к своей истории более сложными способами.
Вы можете использовать магическую функцию% history, чтобы проверить прошлый ввод и вывод. История ввода из предыдущих сессий сохраняется в базе данных, и IPython может быть настроен для сохранения истории вывода.
Несколько других магических функций могут использовать вашу историю ввода, включая% edit,% rerun,% rev,% macro,% save и% pastebin. Вы можете использовать стандартный формат для ссылки на строки:
Это займет строку 3 и строки 18–20 текущего сеанса, а строки 1–5 предыдущего сеанса.
Смотрите% истории? для Docstring и другие примеры.
Кроме того, обязательно изучите возможности % store magic для облегченного хранения переменных в IPython.
Чтобы автоматически
c.StoreMagic.autorestore = True
восстановить сохраненные переменные при запуске, укажите в ipython_config.py.источник
c.HistoryManager.db_log_output
в файле конфигурации.Просто положить еще один совет в миску: Spyder
Он имеет журнал истории и исследователь переменных . Если вы работали с MatLab, то вы увидите сходство.
источник
Что касается Linux, можно использовать
script
команду для записи всего сеанса. Это частьutil-linux
пакета, так должно быть в большинстве систем Linux. Вы можете создать и псевдоним или функцию, которая будет вызыватьсяscript -c python
и которая будет сохранена вtypescript
файл. Например, вот перепечатка одного такого файла.Небольшим недостатком здесь является то, что
script
записывает все, даже переводы строк, всякий раз, когда вы нажимаете клавишу Backspace и т. Д. Поэтому вы можете захотеть использовать ихcol
для очистки вывода (см. Этот пост в Unix & Linux Stackexchange ).источник
Команда
%history
замечательная, но, к сожалению, она не позволит вам сохранить вещи, которые были% paste 'd, в sesh. Чтобы сделать это, я думаю, что вы должны сделать%logstart
в начале (хотя я не подтвердил эту работу).Что мне нравится делать, так это
%history -o -n -p -f filename.txt
который сохранит вывод, номера строк и '>>>' перед каждым вводом (опции o, n и p). Смотрите документы для% истории здесь .
источник
есть еще один вариант --- pyslice. в "wxpython 2.8 docs demos and tools" есть программа с открытым исходным кодом "pyslices".
Вы можете использовать его как редактор, и он также поддерживает использование как консоль ---- выполнение каждой строки как интерактивный интерпретатор с немедленным эхо.
конечно, все блоки кодов и результаты каждого блока будут автоматически записаны в текстовый файл.
результаты записываются сразу за соответствующим блоком кода. очень удобно.
источник
Если вы используете bpython , вся история команд по умолчанию сохраняется в
~/.pythonhist
.Чтобы сохранить команды для последующего повторного использования, вы можете скопировать их в файл скрипта Python:
Затем отредактируйте этот файл, чтобы очистить его и поместить в путь Python. (пакеты сайтов глобальной или виртуальной среды, текущий каталог, упоминание в * .pth или каким-либо другим способом).
Чтобы включить команды в вашу оболочку, просто импортируйте их из сохраненного файла:
источник
В некоторых комментариях спрашивалось, как сохранить все входные данные IPython одновременно. Для% save magic в IPython вы можете сохранить все команды программно, как показано ниже, чтобы избежать появления сообщения с подсказкой, а также для указания вводимых номеров. currentLine = len (In) -1% save -f my_session 1- $ currentLine
Эта
-f
опция используется для принудительной замены файла иlen(IN)-1
отображает текущее приглашение ввода в IPython, позволяя вам сохранить весь сеанс программно.источник
Для тех
spacemacs
, кто использует , иipython
что идет с этимpython-layer
, save magic создает много нежелательных выходных данных из-за постоянной команды автозаполнения, работающей в фоновом режиме, такой как:Чтобы избежать этого, просто сохраните буфер ipython, как обычно, сохраните любой другой:
spc f s
источник
Я хотел бы предложить другой способ поддержки сессии Python через tmux на Linux. вы запускаете tmux, присоединяете себя к сеансу, который вы открыли (если он не был присоединен после его непосредственного открытия). выполнить Python и делать все, что вы делаете на нем. затем отсоединиться от сессии. отсоединение от сеанса tmux не закрывает сеанс. сессия остается открытой.
плюсы этого метода: вы можете присоединиться к этому сеансу с любого другого устройства (в случае, если вы можете SSH свой компьютер)
Минусы этого метода: этот метод не освобождает ресурсы, используемые открытой сессией Python, пока вы фактически не существуете интерпретатора Python.
источник
Чтобы сохранить ввод и вывод в XUbuntu :
Terminal
в верхней строке меню и найдитеsave contents
в раскрывающемся спискеЯ считаю, что это сохраняет ввод и вывод, вплоть до того, когда я открыл терминал. Это не зависит от ipython и будет работать с ssh-сессиями или другими задачами, запускаемыми из окна терминала.
источник