首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python.exe python.exe

python.exe python.exe
EN

Stack Overflow用户
提问于 2013-12-21 07:01:29
回答 1查看 114关注 0票数 1

下面的代码为什么不打印stdout和退出,而是挂在窗口上,我对此感到很困惑。有什么原因吗?

代码语言:javascript
复制
import subprocess
from subprocess import Popen

def main():
    proc = Popen(
        'C:/Python33/python.exe',
        stderr=subprocess.STDOUT,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE
    )
    proc.stdin.write(b'exit()\r\n')
    proc.stdin.flush()
    print(proc.stdout.read(1))

if __name__=='__main__':
    main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-21 07:13:38

替换如下:

代码语言:javascript
复制
proc.stdin.flush()

通过以下方式:

代码语言:javascript
复制
proc.stdin.close()

否则,子进程python.exe将永远等待stdin关闭。

备选方案:使用communicate()

代码语言:javascript
复制
proc = Popen(...)
out, err = proc.communicate(b'exit()\r\n')
print(out)  # OR print(out[:1]) if you want only the first byte to be print.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20716484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档