【问题标题】:Subprocess.Popen stdin in new consoleSubprocess.Popen 新控制台中的标准输入
【发布时间】:2017-01-15 03:47:36
【问题描述】:

我想在新的控制台中执行一个 python 子进程。一旦开始,我希望用户能够回答这个新进程在标准输入上提出的问题。

我尝试了以下代码:

p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd, creationflags=subprocess.CREATE_NEW_CONSOLE)
(o, e) = p.communicate()

只要子进程要求在标准输入上输入,就会显示以下错误消息:

EOFError: 读取一行时出现EOF

这是实现这一目标的好方法吗?

【问题讨论】:

  • 让它成为答案?可能对某些人有用:)
  • 是的,它有效。我将评论移至答案。

标签: python subprocess stdin


【解决方案1】:

由于我对 stdout/stderr 重定向不是很感兴趣,所以我尝试了这种方式:

subprocess.Popen(cmd, cwd=cwd, creationflags=subprocess.CREATE_NEW_CONSOLE)

现在可以正常使用了。我想重定向标准输入/输出和创建新控制台是不兼容的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多