En Sat, 12 May 2007 00:46:16 -0300, Greg Ercolano <[EMAIL PROTECTED]>  
escribió:

>       When I use os.popen(cmd,'w'), I find that under windows, the stdout
>       of the child process disappears, instead of appearing in the DOS window
>       the script is invoked from. eg: [...]
>       When I run the same python program on a unix box, the output
>       from 'nslookup' appears in the terminal, as I'd expect.
>
>       Shouldn't popen() be consistent in its handling of the child's
>       stdout and stderr across platforms?
>
>       Maybe I'm missing something, being somewhat new to python, but
>       an old hand at unix and win32 and functions like popen(). Didn't
>       see anything in the docs for popen(), and I googled around quite
>       a bit on the web and groups for eg. 'python windows popen stdout lost'
>       and found nothing useful.

Using the subprocess module is the recommended approach (as you can see on  
the os.popen documentation) and does what you want:

C:\TEMP>type foo2.py
import subprocess
p = subprocess.Popen("nslookup", stdin=subprocess.PIPE)
p.stdin.write("google.com\n")
p.stdin.close()

C:\TEMP>python foo2.py

C:\TEMP>Servidor predeterminado:  coyote.softlabbsas.com.ar
Address:  192.168.0.116

> Servidor:  coyote.softlabbsas.com.ar
Address:  192.168.0.116

Respuesta no autoritativa:
Nombre:  google.com
Addresses:  64.233.187.99, 64.233.167.99, 72.14.207.99

>
C:\TEMP>

For more info about subprocess usage, see  
http://docs.python.org/lib/module-subprocess.html

-- 
Gabriel Genellina

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to