Having trouble converting popen2 to subprocess

2006-11-18 Thread Daniel Klein
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

2006-11-18 Thread tom
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

2006-11-18 Thread Fredrik Lundh
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

2006-11-18 Thread Daniel Klein

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