3

如果我运行通信功能两次,谁能解释为什么会出现此错误?

例如

from subprocess import *
SVN=Popen('which svn', shell=True, stdout=PIPE)
print SVN.communicate()[0]

返回

"/usr/bin/svn"

但运行再次通信......

print SVN.communicate()[0]

返回...

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py",     line 746, in communicate
stdout = _eintr_retry_call(self.stdout.read)
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 478, in _eintr_retry_call
return func(*args)
ValueError: I/O operation on closed file
4

1 回答 1

5

因为实际上是被调用程序的标准输出的“文件”已经被关闭了。这意味着您已经阅读了上一个中的所有输出communicate(),因此再次调用它永远不会产生任何结果。

于 2013-03-10T05:49:14.290 回答