Can't run Popen.communicate() twice. (Python subprocess module)
Question: Can anyone explain why I get this error if I run the communicate function
twice?

For instance

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

returns

    
    
    "/usr/bin/svn"
    

but running communicate again...

    
    
    print SVN.communicate()[0]
    

returns...

    
    
    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
    


Answer: Because the "file", which is actually the stdout of the program being invoked,
has been closed. This means you have already read all the output in the
previous `communicate()`, so calling it again can never produce anything.

