[英]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.stdin
、 sys.stdout
和sys.stderr
连接到控制台窗口。
从cmd.exe
或 PowerShell 控制台窗口启动时,执行是同步的:请参阅下面的eryksun的第一条评论。
pythonw.exe
是一个用于启动 GUI/no-UI-at-all 脚本的 GUI 应用程序。
sys.stdin
、 sys.stdout
和sys.stderr
不可用。
print()
会导致这种情况发生(在 3.x 中, print()
根本不起作用)。
pythonw.exe yourScript.pyw 1>stdout.txt 2>stderr.txt
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
关联(调用)请参阅此处: 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.