FAQ
En Sat, 12 May 2007 00:46:16 -0300, Greg Ercolano <erco at 3dsite.com>
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

Search Discussions

Discussion Posts

Previous

Follow ups

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 2 of 3 | next ›
Discussion Overview
grouppython-list @
categoriespython
postedMay 12, '07 at 3:46a
activeMay 12, '07 at 4:33a
posts3
users3
websitepython.org

People

Translate

site design / logo © 2022 Grokbase