Cannot redirect output when I run Python script on Windows using just script's name
这是在Windows7(64位)的python 2.6上运行的,它带有针对python的win32扩展。
我有一个简单的脚本,只打印"你好,世界"。我可以用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | C:> python hello.py hello world C:> python hello.py >output C:> type output hello world C:> hello.py hello world C:> hello.py >output close failed in file object destructor: Error in sys.excepthook: Original exception was: |
我想我在升级到Windows7之后首先会得到这个错误。我记得它应该在XP中工作。我见过有人谈论过这个bug python-bugs-1012692无法将输入管道传输到python程序。但那是很久以前的事了。它没有提到任何解决方案。
有人经历过吗?有人能帮忙吗?
你在问这个吗?
Windows: When executing Python scripts on the command line using file type
associations (i.e. starting"script.py" instead of"python script.py"),
redirects may not work unless you set a specific registry key. See
the Knowledge Base article STDIN/STDOUT Redirection May Not Work If Started from a File Association.
它在python自述文件中。也许这个补丁就是你要找的。
更新答案
Microsoft知识库问题(如果从文件关联启动,则stdin/stdout重定向可能不起作用)可能正是此问题。该页有下载Win2000修补程序的说明,但在较新的Windows版本上可能不需要。在修补程序之后(或者可能没有修补程序,这取决于您的win版本),需要手动编辑注册表。
您应该查看我提供的链接;无论如何,我在此总结:
- 打开注册表编辑器并找到键
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer 。 - 添加一个名为
InheritConsoleHandles 的dword值,并将其设置为1 。
据说就是这样。
如果试图从命令提示重定向stdout和stderr,请参阅http://support.microsoft.com/kb/110930
我不知道这个问题,但我有一个解决的办法。您是否考虑过添加命令行选项(如