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