您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Windows上的Python管道:为什么这不起作用?

Windows上的Python管道:为什么这不起作用?

我在Windows机器上对此进行了测试,如果您指定Python exe,它将可以正常工作:

C:\>C:\Python25\python.exe output.py | C:\Python25\python.exe input.py
Give me the greeting. The greeting is: hello

但是如果直接以以下方式运行命令,也会出现EOFError:

output.py | input.py

我不确定为什么会这样,我仍在调查这一问题,但至少现在应该为您提供一种解决方法。它可能与.py文件调用文件处理程序的方式有关。

:嗯,你知道什么。看起来这实际上是Windows中的错误,其中从文件关联启动stdin / stdout重定向可能无法正常工作。因此,解决方法正如我和Patrick所指出的那样,您需要指定“ python”将运行input.py,否则它将无法将stdout从output.py正确重定向到stdin,以用于input.py。

参考

若要更改此行为并使Windows管道按预期的方式进行stdin / stdout重定向,可以将此值添加注册表中(在我的盒子上经过测试,并根据需要验证了此功能)。

名称InheritConsoleHandles 数据类型: REG_DWORD 基数:十进制 值数据:1

python 2022/1/1 18:49:35 有367人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶