python - 新控制台中的 Subprocess.Popen stdin

标签 python subprocess stdin

我想在新控制台中执行 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()

一旦子进程要求在 stdin 上输入,就会显示以下错误消息:

EOFError: EOF when reading a line

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

最佳答案

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

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

现在一切正常。我猜想重定向标准输入/输出和创建新控制台不兼容。

关于python - 新控制台中的 Subprocess.Popen stdin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39370127/

相关文章:

c - 这样创建的文件放在哪里?

python - 启动脚本/Scrapy时修改文件路径

python : redirected message order

python - 如何使用 Python 从 Bash 提示符中捕获用户输入

subprocess - 在 IPython 中运行外部命令

python - 通过 echo 管道将 python 变量(字符串)传递给 bash 命令

c - 如何在 C 中检查 stdin == stdout

python - 用Run运行Django找不到LESS CSS

带有可变十进制数说明符的 Python f 字符串

python - 在Python中使用WIN32 API CreateProcessAsUser