pythonw.exe или python.exe?
короче: pythonw.exe ничего не делает, python.exe ничего не принимает (какой из них я должен использовать?)
test.py:
print "a"
окно CMD:
C:path>pythonw.exe test.py
<BLANK LINE>
C:path>
C:path>python.exe test.py
File "C:pathtest.py", line 7
print "a"
^
SyntaxError: invalid syntax
C:path>
пожалуйста, скажите мне, что я делаю ужасно неправильно.
5 ответов:
если вы не хотите, чтобы при запуске программы всплывало окно терминала, используйте
pythonw.exe;
В противном случае, используйтеpython.exeотносительно синтаксической ошибки:
Так что используйте вместо этого:print("a")
обобщить и дополнить существующие ответы:
python.exeконсоль (терминал) приложение для запуска скриптов типа CLI.
- если не запустить из существующего окна консоли,
python.exeоткроется новое окно консоли.- стандартные потоки
sys.stdin,sys.stdoutиsys.stderrare подключен к консоли окно.исполнение синхронно при запуске из
cmd.exeили окно консоли PowerShell:посмотреть eryksunС 1-й комментарий ниже.
- если было создано новое окно консоли, оно остается открытым до завершения скрипта.
- при вызове из существующего окна консоли приглашение блокируется до тех пор, пока сценарий прекращает.
pythonw.exeэто приложение с графическим интерфейсом для запуска GUI / no-UI-at-all scripts.
- нет консоли открывается.
- исполнение асинхронные:
- при вызове из консоли, скрипт просто запустил и приглашение возвращается сразу же, независимо от того, работает ли скрипт или нет не.
- стандартные потоки
sys.stdin,sys.stdoutиsys.stderrare недоступен.
- осторожностью:если вы не предпримете дополнительных шагов, это потенциально неожиданные побочные эффекты:
- необработанных исключений вызвать скрипт отмена молча.
- В Python 2.х, просто пытаюсь используйте
print()может привести к тому, что произойдет (в 3.x,print()просто не имеет никакого эффекта).- до предотвратить это из вашего скрипта, и чтобы узнать больше, см. ответ шахты.
- специальной, вы можете использовать перенаправление вывода:спасибо, @handle.
pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
(из PowerShell:cmd /c pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt) для захвата вывода stdout и stderr в файлы.
Если вы уверены, что использованиеprint()это единственная причина, по которой ваш скрипт не работает беззвучно сpythonw.exe, и вы не заинтересованы в выводе stdout, используйте команду @handle из комментариев:pythonw.exe yourScript.pyw 1>NUL 2>&1
будьте осторожны: этот метод перенаправления вывода нет не работы при вызове*.pywскрипты напрямую (в отличие от передачи пути к файлу скрипта вpythonw.exe). посмотреть eryksun2-й комментарий и его последующие действия ниже.
вы можете контролируйте, какой из исполняемых файлов запускает ваш скрипт по умолчанию - например, при открытии из Explorer-by выбор правильного расширения:
*.pyфайлы по умолчанию связаны (вызваны) сpython.exe*.pywфайлы по умолчанию связано (вызывается) сpythonw.exe
смотрите здесь: http://docs.python.org/using/windows.html
pythonw.exe " это подавляет окно терминала при запуске."
если вы собираетесь вызвать скрипт python из какого-либо другого процесса (скажем, из командной строки), используйте
pythonw.exe. В противном случае, ваш пользователь будет постоянно видетьcmdОкно запуска процесса python. Он все равно будет запускать ваш скрипт, но он не будет вторгаться в пользовательский интерфейс.пример может быть отправка электронной почты;
python.exeпоявится окно CLI, отправьте электронное письмо, а затем закройте окно. Это будет выглядеть как быстрая вспышка, и может считаться несколько раздражающим.pythonw.exeизбегает этого, но все равно отправляет электронное письмо.
Я изо всех сил пытался получить эту работу на некоторое время. После того как вы измените расширение на .pyw, убедитесь, что вы открыли свойства файла и направили путь "открыть с помощью" в pythonw.исполняемый.
Comments