3

通信機能を 2 回実行すると、このエラーが発生する理由を誰か説明できますか?

例えば

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 に答える