Passing File Objects into Subprocess.Popen

Brandon Harris brandon.harris at reelfx.com
Thu Nov 4 18:13:09 EDT 2010


  I'm running python 2.5 and have bumped into an issue whereby the PIPE 
in subprocess.Popen locks up after taking too many characters. I found 
some documentation that discuss this problem and offers some ideas for 
solutions, the best one being to pass a file object into subprocess 
instead of PIPE. This will allow for much larger std output.

http://thraxil.org/users/anders/posts/2008/03/13/Subprocess-Hanging-PIPE-is-your-enemy/

The problem is that, while I can pass in a tempfile.TemporaryFile() and 
everything seems to go swimmingly, there doesn't seem to be anything 
written to file I handed Popen.

import tempfile
import subprocess

def awesome():
     # I understand that not everyone has nuke, but it doesn't seem to 
matter what I run through it
     # the result is the same.
     my_cmd = '/usr/local/Nuke6.0v3/Nuke6.0 -V'

     my_stderr = tempfile.TemporaryFile()
     my_stdout = tempfile.TemporaryFile()

     process = subprocess.Popen(my_cmd, stderr=my_stderr, stdout=my_stdout)
     process.wait()

     print my_stderr.read()
     print my_stdout.read()

     print "Finished!!!"

Any help on this issue would be awesome! thanks!

Brandon L. Harris






More information about the Python-list mailing list