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>


пожалуйста, скажите мне, что я делаю ужасно неправильно.

741   5  

5 ответов:

если вы не хотите, чтобы при запуске программы всплывало окно терминала, используйте pythonw.exe;
В противном случае, используйте python.exe

относительно синтаксической ошибки:printтеперь функция в 3.x
Так что используйте вместо этого:

print("a")

обобщить и дополнить существующие ответы:

  • python.exe консоль (терминал) приложение для запуска скриптов типа CLI.

    • если не запустить из существующего окна консоли,python.exeоткроется новое окно консоли.
    • стандартные потокиsys.stdin,sys.stdout и sys.stderr are подключен к консоли окно.
    • исполнение синхронно при запуске из cmd.exe или окно консоли PowerShell:посмотреть eryksunС 1-й комментарий ниже.

      • если было создано новое окно консоли, оно остается открытым до завершения скрипта.
      • при вызове из существующего окна консоли приглашение блокируется до тех пор, пока сценарий прекращает.
  • pythonw.exe это приложение с графическим интерфейсом для запуска GUI / no-UI-at-all scripts.

    • нет консоли открывается.
    • исполнение асинхронные:
      • при вызове из консоли, скрипт просто запустил и приглашение возвращается сразу же, независимо от того, работает ли скрипт или нет не.
    • стандартные потокиsys.stdin,sys.stdout и sys.stderr are недоступен.
      • осторожностью:если вы не предпримете дополнительных шагов, это потенциально неожиданные побочные эффекты:
        • необработанных исключений вызвать скрипт отмена молча.
        • В 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

    Ничего не найдено.