Я только начал с Python. Когда я запускаю файл сценария python в Windows, окно вывода появляется, но мгновенно исчезает. Мне нужно, чтобы он оставался там, чтобы я мог анализировать свой результат. Как я могу оставить его открытым?
person rohitmishra schedule 16.06.2009 source источник
Запоздалый +1000. Я использую python в качестве языка обучения для друга, который использует Windows, и я не мог поверить, насколько сложно было (по крайней мере, на основании существующей документации) добраться до того места, где мы могли бы запустить скрипт и увидеть результат. — person Cascabel nbsp schedule 10.02.2017
Вы можете подумать, что окно вывода должно оставаться открытым по умолчанию. Это происходит при запуске Python в Mac OS. Очень неприятно — person Fandango68 nbsp schedule 16.05.2018
Ответы (24)
- Запускаем программу с уже открытого терминала. Откройте командную строку и введите:
python myscript.py
raw_input()
person nosklo schedule 16.06.2009
+1 к пункту 3. Я использую Scite в качестве редактора Python, и он просто сохраняет вывод в собственном окне вывода. Это действительно полезно, потому что вы потенциально можете увидеть результат более чем одного запуска в одном окне. — person Joris Timmermans; 16.06.2009
Как избавиться от консоли Python ✂
Я могу увидеть результат, запустив его с уже открытого терминала. Но мне нужно указать полный адрес скрипта в команде python? Можно ли этого избежать? Когда я использую метод raw_input (), он выдает ошибку NameError: имя raw_input не определено. Можете ли вы предложить редактор, который автоматически приостанавливает работу после выполнения? — person rohitmishra; 16.06.2009
У меня есть способ получше: использовать os . Я использую следующий код: import os os.system(«PAUSE») для окон и import os os.system(‘read -p «»‘) . Кажется, это более чистый способ сделать это. — person IronManMark20; 05.05.2015
Вариант 3 должен быть первым в этом списке. — person Jonny; 16.02.2017
Реализация варианта 3 работает в NotePad ++ для python 3 — person DaveK; 28.08.2018
Любой способ адаптации метода 1) без необходимости физически открывать новый терминал? Я ищу решение, которое работает со всеми ярлыками Windows. — person AnnanFay; 02.01.2021
cmd /k — это типичный способ открыть любое консольное приложение (не только Python) с окном консоли, которое останется после закрытия приложения. Самый простой способ, который я могу придумать, — это нажать Win + R, ввести cmd /k , а затем перетащить нужный скрипт в диалоговое окно «Выполнить».
person tzot schedule 23.06.2009
Фантастический ответ. Вы должны были это получить. — person Jagu; 26.10.2011
Просто fyi для команды python os.system, которую вы бы сделали os.system (cmd / k + myAppPath + + myFlagsString) — person Jay; 06.12.2011
cmd /k только для Windows. Я не могу помочь с альтернативой Mac, извините. — person tzot; 09.03.2012
Вам нужно перетаскивать скрипт, включая саму команду Python? Извините, можно мне пример? Я новичок, очень новичок в Python под окнами. — person Fandango68; 30.11.2017
Как сделать, чтобы окно черепашки turtle не закрывалось после выполнения программы
Этот ответ был самым прямым и делает именно то, что мне нужно в среде Windows. После выполнения программы окно терминала остается открытым. — person CameronAtkinson; 16.12.2019
Это также работает для ярлыков утилит сборки python и, вероятно, является наиболее полезным случаем. Таким образом, вы можете изменить ярлык на рабочем столе на python / pipenv / pyenv / etc, чтобы он оставался открытым при ошибке. — person AnnanFay; 02.01.2021
Запустите скрипт из уже открытого окна cmd или в конце скрипта добавьте что-то вроде этого в Python 2:
raw_input(«Press enter to exit ;)»)
input(«Press enter to exit ;)»)
person Anurag Uniyal schedule 16.06.2009
Никакая клавиша не будет работать, будет работать только Enter (или Ctrl + D, в зависимости от того, где мы находимся). — person Daniel Andersson; 02.11.2013
Если задуматься, то это так глубоко, что только вход позволит вам выйти . — person Joel B; 06.11.2013
имейте в виду, что терминал закроется независимо от того, произойдет ли исключение. — person johnson; 09.07.2020
Чтобы окно оставалось открытым в случае исключения (пока что при печати исключения)
Python 2
if __name__ == ‘__main__’: try: ## your code, typically one function call except Exception: import sys print sys.exc_info()[0] import traceback print traceback.format_exc() print «Press Enter to continue . » raw_input()
Чтобы окно в любом случае оставалось открытым:
if __name__ == ‘__main__’: try: ## your code, typically one function call except Exception: import sys print sys.exc_info()[0] import traceback print traceback.format_exc() finally: print «Press Enter to continue . » raw_input()
Python 3
Для Python3 вам придется использовать input() вместо raw_input() и, конечно, адаптировать операторы print .
if __name__ == ‘__main__’: try: ## your code, typically one function call except BaseException: import sys print(sys.exc_info()[0]) import traceback print(traceback.format_exc()) print(«Press Enter to continue . «) input()
Чтобы окно в любом случае оставалось открытым:
if __name__ == ‘__main__’: try: ## your code, typically one function call except BaseException: import sys print(sys.exc_info()[0]) import traceback print(traceback.format_exc()) finally: print(«Press Enter to continue . «) input()
person Antonio schedule 12.03.2014
вы можете объединить ответы раньше: (для пользователя Notepad ++)
нажмите F5, чтобы запустить текущий скрипт, и введите команду:
cmd /k python -i «$(FULL_CURRENT_PATH)»
таким образом вы остаетесь в интерактивном режиме после выполнения вашего скрипта Python ++ в Notepad ++, и вы можете поиграть со своими переменными и так далее 🙂
person feinmann schedule 10.02.2012
Это отличный пакетный файл Windows, если вы измените $ (FULL_CURRENT_PATH) на путь к Windows. — person Noumenon; 27.07.2015
Мне было намного проще получить плагин PyNPP и назначить ярлык для его запуска (не забудьте отключить предыдущий ярлык F5) — person JinSnow; 24.11.2016
Создайте командный файл Windows с этими двумя строками:
python your-program.py pause
person maurizio schedule 16.05.2015
Или import os os.system(«pause») в конце .py файла — person Spikatrix; 25.05.2015
Это единственный хоть отдаленно правильный ответ. Ответы, требующие искажения каждого отдельного сценария Python, который вы когда-либо запускали с raw_input или другим мусором, просто неверны. Либо введите свою команду в командной строке так, как ожидает Python, либо используйте пакетный язык, который был предоставлен с MS-DOS для именно этой цели с момента Август 1981 года. — person Kevin J. Chase; 06.06.2016
еще лучше, используйте python %* и установите его как одну из открытых с программами, чтобы вы могли либо щелкнуть правой кнопкой мыши файл .py, чтобы открыть окно паузы, либо я также поместил его в свою папку Anaconda3 (в PATH) как py_pause.bat, так что теперь я может запускать py_pause my-prog.py all my args из строки cmd — person brian; 24.05.2017
Используя atexit , вы можете приостановить программу сразу после ее выхода. Если причиной выхода является ошибка / исключение, он будет приостановлен после печати трассировки стека.
import atexit # Python 2 should use `raw_input` instead of `input` atexit.register(input, ‘Press Enter to continue. ‘)
В моей программе я помещаю вызов atexit.register в предложение except , чтобы он приостанавливался только в том случае, если что-то пойдет не так.
if __name__ == «__main__»: try: something_that_may_fail() except: # Register the pause. import atexit atexit.register(input, ‘Press Enter to continue. ‘) raise # Reraise the exception.
person leewz schedule 03.12.2015
В python 2 это можно сделать с помощью: raw_input ()
>>print(«Hello World!») >>raw_input(‘Waiting a key. ‘)
В python 3 это можно сделать с помощью: input ()
>>print(«Hello world!») >>input(‘Waiting a key. ‘)
Также вы можете сделать это с помощью time.sleep (time)
>>import time >>print(«The program will close in 5 seconds») >>time.sleep(5)
person Brandon Aguilar schedule 18.08.2015
input(‘Press Enter to Exit. ‘)
Сделаю свое дело.
person Amila schedule 27.05.2018
У меня была похожая проблема. В Notepad ++ я использовал команду: C:Python27python.exe «$(FULL_CURRENT_PATH)» , которая закрывала окно cmd сразу после завершения кода.
Теперь я использую cmd /k c:Python27python.exe «$(FULL_CURRENT_PATH)» , который сохраняет окно cmd открытым.
person Matej schedule 18.12.2010
Вы можете добавить; C: Python27 в конец переменной среды Path. Таким образом, его можно сократить до cmd / k python -i $ (FULL_CURRENT_PATH) — именно то, что сказано в ответе выше, плюс полезный -i. — person Enigma; 13.12.2012
Чтобы просто держать окно открытым, я согласен с Anurag, и это то, что я сделал, чтобы мои окна оставались открытыми для коротких небольших программ типа вычислений.
Это просто отобразит курсор без текста:
raw_input()
Следующий пример даст вам четкое сообщение о том, что программа выполнена и не ожидает другого приглашения ввода в программе:
print(‘You have reached the end and the «raw_input()» function is keeping the window open’) raw_input()
Примечание!
(1) В python 3 нет raw_input (), только input ().
(2) Используйте одинарные кавычки, чтобы указать нить; в противном случае, если вы напечатаете удвоение вокруг чего-либо, например «raw_input ()», он будет думать, что это функция, переменная и т. д., а не текст.
В следующем примере я использую двойные кавычки, и он не сработает, потому что считает, что между «the» и «function» есть разрыв в кавычках, хотя, когда вы его читаете, ваш собственный разум может понять это:
print(«You have reached the end and the «input()» function is keeping the window open») input()
Надеюсь, это поможет другим, кто может только начать, но еще не понял, как думает компьютер. Это может занять некоторое время. : o)
person Mr Whybull schedule 05.10.2013
Если вы хотите запустить сценарий с ярлыка на рабочем столе, щелкните правой кнопкой мыши файл python и выберите Send to|Desktop (create shortcut) . Затем щелкните ярлык правой кнопкой мыши и выберите «Свойства». На вкладке «Ярлык» выберите текстовое поле «Цель:», добавьте cmd /k перед путем и нажмите «ОК». Теперь ярлык должен запускать ваш скрипт без закрытия, и вам не нужен input(‘Hit enter to close’)
Обратите внимание: если на вашем компьютере установлено несколько версий python, добавьте имя требуемого исполняемого файла python между cmd / k и путем scipt следующим образом:
cmd /k python3 «C:Users\Documentsyour_scipt.py»
person Paul Stevens schedule 03.03.2017
Спасибо! Это мне действительно очень помогло. Я пользователь Linux и не мог понять этого. — person Michael Bruce; 12.06.2017
Источник: digitrain.ru
Как сделать, чтобы консоль не закрывалась в Python
В этой статье мы рассмотрим несколько способов, с помощью которых можно предотвратить закрытие консоли после выполнения программы на языке Python.
1. Использование функции input()
Один из самых простых способов предотвратить закрытие консоли после выполнения программы — использовать функцию input() . Вставьте эту функцию в конец вашей программы, и консоль будет ожидать ввода от пользователя перед закрытием.
print(«Привет, мир!») input(«Нажмите Enter, чтобы выйти.»)
2. Использование модуля os
Другой способ — использовать модуль os и функцию os.system() для вызова команды pause в командной строке. Этот метод хорошо работает в операционных системах Windows.
import os print(«Привет, мир!») os.system(«pause»)
3. Использование бесконечного цикла
Еще один вариант — использовать бесконечный цикл, который будет ожидать нажатия клавиши, чтобы закончить выполнение программы.
print(«Привет, мир!») while True: pass
Однако, этот метод не рекомендуется, так как он может привести к зависанию программы и излишнему потреблению ресурсов.
Заключение
Как предотвратить автоматическое закрытие консоли после выполнения командного файла
Какую команду я могу поставить в конце командного файла, чтобы предотвратить автоматическое закрытие консоли после выполнения файла?
Было бы хорошо, если бы был способ определить, был ли файл .cmd запущен двойным щелчком в проводнике (тогда вы хотите, чтобы он сделал паузу в конце), или если он был запущен уже открытой командной строкой. В последнем случае (и особенно если он выполняется другой программой) вам не нужна пауза. Я не нашел хорошего решения для этого случая (и обычно использую переменную if% NOPAUSE%, но это работает только для родительских программ, а не для оболочек paremt).
Есть способ: stackoverflow.com/questions/3551888/…
В пакетных файлах Windows / DOS:
pause
Это печатает хорошее «Press any key to continue . . . » сообщение
Или, если вы не хотите «Press any key to continue . . .» сообщение, сделайте это вместо:
pause >nul
Ни одно из предложенных здесь предложений не работает для меня, если дважды щелкнуть файл bat. Это серверная среда (и я должен запустить скрипт в ней), чтобы они могли изменить поведение. Это не меняет мою цель. Чтобы командное окно оставалось открытым, я могу выводить сообщение об ошибке.
Да, это не всегда работает в зависимости от окружающей среды. Для более надежного решения см. Мой ответ ниже. По сути, просто сделайте set / p exitkey = «Нажмите любую клавишу, чтобы продолжить . «
Будьте осторожны, если кто-то запустит ваш скрипт без окна консоли (например, через vbscript), он будет зависать, пока вы не убьете его через диспетчер задач.
Если это что-то вроде maven, используйте CALL, stackoverflow.com/a/52205298/4485678
Здесь отлично работает пауза
Зависит от точного вопроса!
Обычно pause выполняет работу в файле .bat .
Если вы хотите, чтобы cmd.exe не закрывался, чтобы продолжать печатать, используйте cmd /k команду в конце файла.
Если вы запускаете команды Windows через диалоговое окно «Выполнить», поместите cmd /k вместо него команду. title» call abcd.exe param1 param2 start «title» call xyz.exe param1 param2
В моем случае у меня была какая-то ошибка во время выполнения команды терминала, и поэтому команды ‘pause’ и ‘cmd / k’ не помогли мне остановить программу из-за ошибки. Этот пример помог мне показать, у меня есть ошибка, а также остановился совсем из терминала. Спасибо!
Если вы используете Maven и хотите пропустить ввод и не допустить закрытия консоли, чтобы увидеть результат, вам нужно использовать CALL команду в сценарии, кроме просто «mvn clean install».
Как это закроет консоль
ECHO This is the wrong exemple mvn clean install pause
Так консоль останется открытой
ECHO This is the right exemple CALL mvn clean install pause
Если вы не используете CALL команду, ни один из примеров не будет работать.
Большое спасибо! Предотвращение закрытия запроса в случае сбоя команды.
Это сработало для меня. Я хотел выполнить 2 разных команды в 1 файле bat. но моя подсказка закрылась после первой команды. Помещение call решило эту проблему: моя подсказка перестала закрываться после первого выполнения
Самый полезный ответ
Добавьте cmd.exe в качестве новой строки ниже кода, который вы хотите выполнить:
c:Python27python D:codesimple_http_server.py cmd.exe
Это именно то, что я искал, спасибо! «Пауза» просто не будет работать, когда ваш скрипт на Python потерпит крах. Я хотел увидеть сообщение об ошибке. До сих пор мне приходилось запускать свои скрипты на python через консоль
Но это прекрасно работает: python script.py %1 cmd
Спасибо! Это помогло! Я создавал командный файл для запуска приложений на Python.
мой способ — написать реальную партию (говоря «foo.bat»), чтобы закончить работу; затем создайте еще один «start.bat»:
Я считаю, что это очень полезно, когда я устанавливаю одноразовые переменные среды.
Вы можете просто поместить cmd /k (без какой-либо команды) в конец foo.bat файла и запустить его. Вам не нужен отдельный start.bat файл.
Позвоните cmd в конце командного файла.
кроме того pause .
set /p=
Может быть использован. Он будет ожидать ввода пользователя и освободит поток при нажатии Enter.
runas /user:# «» >nul 2>https://qastack.ru/programming/988403/how-to-prevent-auto-closing-of-console-after-the-execution-of-batch-file» target=»_blank»]qastack.ru[/mask_link]