栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

C:>C:Python25python.exe output.py | C:Python25python.exe input.pyGive 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。

参考

http://mail.python.org/pipermail/python-bugs-
list/2004-August/024923.html

http://support.microsoft.com/default.aspx?kbid=321788

更新2

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

  1. 启动注册表编辑器。
  2. 找到并单击注册表中的以下项:

HKEY_LOCAL_MACHINE Software Microsoft Windows CurrentVersion
Policies Explorer

  1. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表值:

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

  1. 退出注册表编辑器。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641600.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号