长话短说: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:\path\test.py", line 7
print "a"
^
SyntaxError: invalid syntax
C:\path>
请告诉我,我做错了什么。
答案 0 :(得分:240)
总结并补充现有答案:
python.exe
是用于启动CLI类型脚本的控制台(终端)应用程序 。
python.exe
会打开一个新的控制台窗口。sys.stdin
,sys.stdout
和sys.stderr
已连接到控制台窗口。从cmd.exe
或PowerShell控制台窗口启动时,执行同步:请参阅下面的eryksun第一条评论。 < / p>
pythonw.exe
是一个GUI应用,用于启动GUI /无UI-at-all脚本。
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输出不感兴趣,请使用评论中的@ handle命令:pythonw.exe yourScript.pyw 1>NUL 2>&1
*.pyw
脚本 时,此输出重定向技术不工作(而不是通过将脚本文件路径传递给pythonw.exe
)。 请参阅eryksun的第2条评论及其后续跟进。 您可以控制哪些可执行文件默认运行您的脚本 - 例如从资源管理器中打开时 - 选择正确的文件扩展名:
*.py
文件默认与python.exe
*.pyw
文件默认与pythonw.exe
答案 1 :(得分:151)
如果您不希望在运行程序时弹出终端窗口,请使用pythonw.exe
;
否则,请使用python.exe
关于语法错误:print
is now a function in 3.x
所以请改用:
print("a")
答案 2 :(得分:17)
见这里:http://docs.python.org/using/windows.html
pythonw.exe“这会在启动时禁止终端窗口。”
答案 3 :(得分:15)
如果您要从其他进程(例如,从命令行)调用python脚本,请使用pythonw.exe
。否则,您的用户将不断看到启动python进程的cmd
窗口。它仍然会运行你的脚本,但它不会干扰用户体验。
示例可能是发送电子邮件; python.exe
将弹出CLI窗口,发送电子邮件,然后关闭窗口。它看起来像一个快速闪光灯,可以被认为有点烦人。 pythonw.exe
可以避免这种情况,但仍会发送电子邮件。
答案 4 :(得分:2)
我努力让这个工作一段时间。将扩展名更改为.pyw后,请确保打开文件的属性并指示&#34;打开&#34; pythonw.exe的路径。
答案 5 :(得分:-2)
根据我的经验,至少使用pygame时pythonw.exe更快。