Python.exe 还是 python.exe?

长话短说: pythonw.exe什么也不做,python.exe什么也不接受(我应该使用哪一个?)

Py:

print "a"

CMD 窗口:

C:\path>pythonw.exe test.py
<BLANK LINE>
C:\path>


C:\path>python.exe test.py
File "C:\path\test.py", line 7
print "a"
^
SyntaxError: invalid syntax


C:\path>

请告诉我哪里做错了。

257809 次浏览

如果您运行程序时不希望出现终端窗口,请使用 pythonw.exe;
否则,使用 python.exe

关于语法错误: print 现在是3. x 中的一个函数
因此,应该使用:

print("a")

看这里: http://docs.python.org/using/windows.html

Exe“这将在启动时取消终端窗口。”

如果要从其他进程(比如从命令行)调用 python 脚本,请使用 pythonw.exe。否则,您的用户将不断看到启动 python 进程的 cmd窗口。它仍然会运行您的脚本,但不会干扰用户体验。

一个例子可能是发送电子邮件; python.exe将弹出一个 CLI 窗口,发送电子邮件,然后关闭窗口。它会以快速闪光的形式出现,可能会被认为有点恼人。pythonw.exe避免了这一点,但仍然发送电子邮件。

总结和补充现有答复:

  • python.exe 是一个控制台(终端)应用程序 用于启动 CLI 类型的脚本(控制台应用程序)

    • 除非从现有的控制台窗口运行 python.exe 打开一个新的控制台窗口

    • 文本数据流 sys.stdinsys.stdoutsys.stderr连接到控制台窗口

    • cmd.exe或 PowerShell 控制台窗口启动时,执行是 同步: < sup > 请参阅下面 赤山的第一条注释。

      • 如果创建了一个新的控制台窗口,它将一直打开,直到脚本终止。
      • 当从现有的控制台窗口调用时,提示将被阻塞,直到脚本终止。
  • pythonw.exe 是一个 GUI 应用程序 用于启动 GUI/no-UI-at-all 脚本

    • 没有打开控制台窗口
    • 执行是 异步的:
      • 当从控制台窗口调用时,脚本只是 发射,并且不管脚本是否仍在运行,提示都会立即返回。
    • 文本数据流 sys.stdinsys.stdoutsys.stderr不可用
      • 警告 : 除非你多走几步,这里有 潜在的意想不到的副作用:
        • 未处理的异常 导致脚本为 悄悄地中止
        • 在 Python 2.x 中,仅仅尝试使用 print()就会导致这种情况发生 (在3.x 中,print()根本没有效果)。
          • 在你的剧本里阻止这一点,了解更多,请看我的 这个答案
          • Ad-hoc ,您可以使用 输出重定向输出重定向: < sup > 感谢,@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)。< sup > 见下面 赤山的第2条评论及其后续行动。

你可以 控制默认情况下哪个可执行程序运行脚本-例如当从资源管理器打开时-通过 选择正确的文件扩展名:

  • 缺省情况下,*.py文件与 python.exe关联(调用)
  • 缺省情况下,*.pyw文件与 pythonw.exe关联(调用)

我一直在努力让这个起作用。一旦您将扩展名更改为。Pyw,请确保打开文件的属性并将“ open with”路径指向 pythonw.exe。

根据我的经验,pythonw.exe 至少在使用 pygame 时更快。