繁体   English   中英

pythonw.exe 还是 python.exe?

[英]pythonw.exe or 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>

请告诉我我做错了什么。

总结和补充现有的答案:

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

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

    • 标准流sys.stdinsys.stdoutsys.stderr连接到控制台窗口

    • cmd.exe或 PowerShell 控制台窗口启动时,执行是同步的请参阅下面的eryksun的第一条评论。

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

    • 没有打开控制台窗口
    • 执行是异步的
      • 当从控制台窗口调用时,脚本只是启动并且提示立即返回,无论脚本是否仍在运行。
    • 标准流sys.stdinsys.stdoutsys.stderr不可用
      • 注意除非您采取额外的步骤否则可能会产生意想不到的副作用
        • 未处理的异常会导致脚本静默中止
        • 在 Python 2.x 中,简单地尝试使用print()会导致这种情况发生(在 3.x 中, print()根本不起作用)。
          • 为了防止在您的脚本中出现这种情况并了解更多信息,请参阅我的这个答案
          • Ad-hoc ,您可以使用输出重定向谢谢,@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 输出不感兴趣,请使用注释中的pythonw.exe命令:
            pythonw.exe yourScript.pyw 1>NUL 2>&1
            警告:调用时,此输出重定向技术不起作用*.pyw直接脚本(如通过将脚本文件路径反对pythonw.exe )。 请参阅eryksun的第二条评论及其下文。

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

  • *.py文件默认与python.exe关联(调用)
  • *.pyw文件默认与pythonw.exe关联(调用)

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

关于语法错误: print现在是 3.x 中的一个函数
所以改用:

print("a")

请参阅此处: http : //docs.python.org/using/windows.html

pythonw.exe “这会在启动时抑制终端窗口。”

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

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

我努力让它工作了一段时间。 将扩展名更改为 .pyw 后,请确保打开文件的属性并将“打开方式”路径指向 pythonw.exe。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM