Держите консоль Windows открытой после ошибки Python - PullRequest
8 голосов
/ 16 мая 2010

Файловые ассоциации на моем компьютере (winxp home) таковы, что скрипт python напрямую открывается с помощью интерпретатора python. Если я дважды щелкну на скрипте Python, откроется окно консоли, и все будет хорошо - если в скрипте нет синтаксической ошибки.

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

Конечно, это будет возможность вручную открыть окно консоли и выполнить скрипт, набрав python myscript.py, но я уверен, что есть более удобное (то есть "основанное на двойном щелчке") решение.

Ответы [ 4 ]

13 голосов
/ 16 мая 2010

Создать командный файл:

C:\Python26\python.exe %1
IF %ERRORLEVEL% NEQ 0 PAUSE

Используйте это как файловую ассоциацию вместо python.exe напрямую. Это приведет к выполнению только оператора PAUSE, если python.exe вернет ошибку

1 голос
/ 13 июня 2010

Канонический способ запуска команды в окне командной строки, которое не закрывается:

cmd /k "your command"
0 голосов
/ 04 августа 2018

Я делаю это, щелкая правой кнопкой мыши скрипт, который я сохранил из блокнота в файл .py, затем я нажимаю edit с IDLE. Это редактирование, но вы также можете запускать модули из него

0 голосов
/ 16 мая 2018

Я оставил комментарий в ответе Россипедии о подобной ситуации, но я сомневаюсь, что это заметят в 8-летнем посте.Итак, я экспериментировал сам.

У меня есть скрипт на python, который обрабатывает папку, которая на него упала.Когда я добавляю новые строки, иногда я получаю синтаксические ошибки и не вижу их, потому что окно командной строки закрывается слишком быстро.Чтобы окно оставалось открытым после ошибки, мне пришлось изменить код Россипедии.Мне нужен был способ передать путь к файлу bat (сбросить в нем папку) и заставить bat передать этот путь скрипту python.Это делает следующее:

debug.bat:

@echo off

REM debug.bat and myscript.py should be in the same dir, otherwise use absolute path for the python script

C:\Users\%username%\AppData\Local\Programs\Python\Python36-32\python.exe "%~dp0\myscript.py" %1
IF %ERRORLEVEL% NEQ 0 PAUSE

myscript.py:

import sys
print("printing dropped file path:")
print(sys.argv[1])
input()

Если я получаю ошибку, я просто использую debug.batчтобы увидеть ошибку, и она работает так же (поместите в нее папку).

Обновление:

В моем реальном скрипте Python у меня есть эта строка:

sys.path.append("modules")

Это не работает, когда я использую debug.bat.«модули» - это папка, которая находится в одной папке со скриптом Python.Когда скрипт вызывается с помощью debug.bat, текущий рабочий каталог меняется на каталог удаленного файла.Итак, чтобы получить путь к «модулям», мне пришлось использовать абсолютный путь:

sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "\\modules")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...