【发布时间】:2015-08-20 20:10:30
【问题描述】:
我正在开发一个实现 cmd 窗口的 python 程序。 我正在使用带有 PIPE 的子进程。 例如,如果我写“dir”(通过标准输出),我使用communicate() 来从 cmd 获取响应,它确实有效。
问题是在一个while True循环中,这不会超过一次,似乎子进程会自行关闭.. 请帮帮我
import subprocess
process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=None)
x=""
while x!="x":
x = raw_input("insert a command \n")
process.stdin.write(x+"\n")
o,e=process.communicate()
print o
process.stdin.close()
【问题讨论】:
-
能贴出相关代码吗?
-
当然.. 我正在更新
-
@Guy:
Popen.communicate()documentation 说:“等待进程终止。” -- 这意味着每个子进程最多可以调用一次。 -
这就是问题所在.. 你能帮我让它活下去吗?因为如果我有像 cd 这样的命令..我希望它留下来..不要关闭并打开一个新的..
标签: python cmd subprocess stdout stdin