【发布时间】:2016-11-14 14:17:06
【问题描述】:
我正在尝试根据他发送给我的答案发送cmd许多命令。
我收到一条运行时错误消息:
ValueError: I/O operation on closed file
当我运行这样的事情时:
import subprocess
process = subprocess.Popen("cmd.exe", stdout=subprocess.PIPE,stdin=subprocess.PIPE)
answer = process.communicate(input="some command\n" + '\n')[0]
"""
choosing another command according to answer
"""
print process.communicate(input=another_command + '\n')[0]
process.kill()
知道如何解决这个问题吗?
感谢您的帮助!
【问题讨论】:
-
您能提供更大的图景吗?你是在
process.kill()之后发送命令吗?如果没有,您能否提供一些代码示例(使用真实命令而不是"some command")?您尝试在 cmd 中运行的命令有可能会终止您的 shell。 -
即使没有
process.kill()并且两个命令都为"ipconfig\n"。第一个命令正在运行,第二个命令给了我运行时错误 -
执行命令可能会发送返回码,关闭 Popen 对象。例如,如果您执行 ipconfig 然后执行
process.poll(),您可能会看到0返回码。 -
是的,它显示
0,有什么办法可以避免关闭Popen object?
标签: python windows cmd subprocess runtime-error