I am trying to redirect stderr of a process to a temporary file and then read back the contents of the file, all in the same python script. As a simple exercise, I launched /bin/ls but this doesn't work:
#!/usr/bin/python import subprocess as proc import tempfile name = tempfile.NamedTemporaryFile(mode='w+b') print 'name is '+ name.name cmd = [] cmd.append('/bin/ls') cmd.append('-l') cmd.append('/tmp') p = proc.Popen(cmd, stdout=name, stderr=proc.STDOUT, close_fds=True) while True: ret = p.poll() if (ret is not None): output = name.readlines() print 'out = ', output break $python sub.py name is /tmp/tmpjz4NJY out = [] I tried calling flush() on the file object but this didn't help either. Tried closing and re-opening the file, but closing the file object results in it getting deleted. Can the above be made to work by using tempfiles? thanks -- http://mail.python.org/mailman/listinfo/python-list