Как сохранить интерактивный сеанс Python 2 idle / shell / command prompt в Windows?

#windows #python-2.7 #history #python-idle

#Windows #python-2.7 #история #python-idle

Вопрос:

Я запускаю вычисления в Windows в течение нескольких часов и хотел бы, чтобы отчет о вычислениях / журнал внутри интерактивного окна IDLE / shell был сохранен в файл в конце с помощью команды. Было бы неплохо выйти () и закрыть окно тоже. Как бы мне ни нравился Linux, это необслуживаемая машина Windows, следовательно, некоторые модули / команды, к сожалению, недоступны, и возможность установки другого программного обеспечения ограничена. Тот факт, что разработчики не придумали команду для сохранения транзакций в IDLE / shell, вызывает удивление.

Я знаю, что в некоторых средах вы можете направить вывод задания, например отчета, в другой текстовый файл, используя клавиши -o, —o, —output, > в текстовый файл. Удивительно, но Python не поддерживает ничего подобного!

Буду признателен за любую помощь, спасибо

Ответ №1:

Командная строка Windows поддерживает перенаправление stdout и, возможно, перенаправление stderr. Я только что протестировал python -c "print(test)" > F:/dev/tem/out.txt , и распечатка отправилась в out.txt. Замените -c «print(‘test’) на script.py и должно произойти то же самое. Может сработать передача стандартного вывода одной программы в стандартный идентификатор другой. Возможно, вы сможете объединять программы в цепочку с помощью файла .bat. PowerShell, вероятно, более мощный и гибкий, но я никогда им не пользовался.

Мне не совсем понятно, о чем вы спрашиваете, но я надеюсь, что следующее ответит на ваши вопросы.

Python работает в 2 режимах: пакетном и интерактивном. Интерактивный режим предназначен для эфемерного взаимодействия с человеком. Пакетный режим предназначен для автоматических вычислений, со случайными сообщениями на экране, но с большинством результатов, отправляемых в файл, отличный от экрана. При запуске оба режима объединяются python -i xyz.py . Файл сначала запускается в пакетном режиме, а затем Python переходит в интерактивный режим.

Похоже, вам следует использовать пакетный режим, а не интерактивный режим Python или IDLE. Если ваш код выполняется из IDLE, вы должны иметь возможность запускать его напрямую с тем же python.exe который вы использовали для запуска IDLE. Конечно, бывают исключения, если кто-то делает свой код зависимым от выполнения в режиме ожидания, но это вряд ли будет случайностью или потребуется для автоматического запуска.

IDLE Shell имитирует интерактивный Python. При запуске файла из окна редактора имитируется IDLE python -i file-being-edited.py , а вывод на экран передается в Shell. В любом случае интерактивный пользователь может сохранить содержимое Shell с помощью команды меню Файл => Сохранить как. Итак, есть такая команда. Существуют также команды закрытия окна и выхода и ярлыки.

При предполагаемом использовании IDLE в качестве интерактивной среды обучения python и разработки программ программе не требуется, чтобы программа выдавала эти команды. Чтобы сохранить данные в файле, программа может открыть файл и записать данные напрямую.

Комментарии:

1. Спасибо. Независимо от того, как я запускаю команду shell / IDLE / Command line, в конце не сохраняются ценные вычисления. Я сохраняю его вручную, но это автоматические вычисления, и модуль предоставляется частным лицом. Я хотел бы иметь дальнейшие вычисления цепочки без необходимости повторять и сохранять их вручную или терять их из-за аппаратного сбоя,… Я знаю, что в некоторых средах вы можете направить вывод задания, например отчета, в другой текстовый файл, используя клавиши -o, —o, —output, > в текстовый файл. Удивительно, но Python не поддерживает ничего подобного!

2. Командная строка Windows поддерживает перенаправление stdout и, возможно, перенаправление stderr. Я только что протестировал python -c "print(test)" > F:/dev/tem/out.txt , и распечатка отправилась в out.txt. Замените -c "print('test') на script.py , и должно произойти то же самое. Может сработать передача стандартного вывода одной программы в стандартный идентификатор другой. Возможно, вы сможете объединять программы в цепочку с помощью файла .bat. PowerShell, вероятно, более мощный и гибкий, но я никогда им не пользовался.

3. Эй, Терри, я не знаю, почему это не пришло мне в голову! Из моего комментария вы можете видеть, что я знал, что это возможно, но никогда не пробовал! В любом случае, я изменил вопрос, чтобы сделать его более понятным, отредактировал ваш ответ и принял его как правильный, поскольку он делает свое дело. Я знаю, как извлечь это оттуда. Спасибо за ваш вклад.

Ответ №2:

Попробуйте посмотреть, можете ли вы установить Jupyter Notebook (не отдельное программное обеспечение, а просто модуль python)

 pip install jupyter
  

Jupyter notebook очень полезен для сохранения вашего кода и обмена им. Его можно использовать как оболочку, так и редактор сценариев.

Комментарии:

1. Спасибо. IPython установлен. Код не работает внутри Jupyter, но отлично работает при вызове из IDLE / shell. Могут быть несовместимости? Желательно, было бы здорово иметь команду в python для сохранения этих вычислений для дальнейших цепных вычислений с помощью того же скрипта. Спасибо