Having trouble converting popen2 to subprocess
Here's a c routine that prints a single line : #include stdio.h main() { printf (Hello World!\n); } And now the Python program (called 'po.py') that uses 'popen2' : import popen2 (fin, fout) = popen2.popen2(r'c:\home\hw.exe', -1, 't') print fin.readline() fin.close() fout.close() When this is run it properly outputs the one line from the c routine : C:\python c:\python\po.py Hello World! Now here is my attempt to use the 'subprocess' module : from subprocess import * p = Popen(r'c:\home\hw.exe', bufsize=-1, stdin=PIPE, stdout=PIPE, universal_newlines=True) fin = p.stdin print fin.readline() fin.close() When this is run, I get no output : C:\python c:\python\sp.py C:\ As you can see, I get no exception. I've tried various combinations of the Popen arguments with no joy. The platform is Windows XP Pro, so I did not try things like 'close_fds'. What am I missing ? Daniel Klein -- http://mail.python.org/mailman/listinfo/python-list
Re: Having trouble converting popen2 to subprocess
Daniel Klein wrote: Here's a c routine that prints a single line : #include stdio.h main() { printf (Hello World!\n); } And now the Python program (called 'po.py') that uses 'popen2' : import popen2 (fin, fout) = popen2.popen2(r'c:\home\hw.exe', -1, 't') print fin.readline() fin.close() fout.close() When this is run it properly outputs the one line from the c routine : C:\python c:\python\po.py Hello World! Now here is my attempt to use the 'subprocess' module : from subprocess import * p = Popen(r'c:\home\hw.exe', bufsize=-1, stdin=PIPE, stdout=PIPE, universal_newlines=True) fin = p.stdin print fin.readline() fin.close() When this is run, I get no output : C:\python c:\python\sp.py C:\ As you can see, I get no exception. I've tried various combinations of the Popen arguments with no joy. The platform is Windows XP Pro, so I did not try things like 'close_fds'. What am I missing ? Daniel Klein subprocess will actually execute as a subprocess, so you have to wait for the command to finish before you look at the stdout. Advantages of this being that you can interfere with stdin/out whilst the program is running. I believe .wait will be what you want, although i haven't look at the docstring, so double check. -- http://mail.python.org/mailman/listinfo/python-list
Re: Having trouble converting popen2 to subprocess
Daniel Klein wrote: Now here is my attempt to use the 'subprocess' module : from subprocess import * p = Popen(r'c:\home\hw.exe', bufsize=-1, stdin=PIPE, stdout=PIPE, universal_newlines=True) fin = p.stdin p.stdin is the *other* process' stdin. if you want to read things it prints, read from p.stdout instead. print fin.readline() fin.close() /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Having trouble converting popen2 to subprocess
Thanks /F, that was it. Dan On Sat, 18 Nov 2006 15:03:30 +0100, Fredrik Lundh [EMAIL PROTECTED] wrote: [snip] p.stdin is the *other* process' stdin. if you want to read things it prints, read from p.stdout instead. print fin.readline() fin.close() /F -- http://mail.python.org/mailman/listinfo/python-list