Matt Herzog wrote:
On Tue, Oct 20, 2009 at 02:49:53PM +0000, Tiago Saboga wrote:
On Tue, Oct 20, 2009 at 2:44 PM, Matt Herzog <m...@blisses.org> wrote:
Yes, thanks. What failed was the invocation of PIPE. Apparently I had to 
explicitly import PIPE from subprocess or python had no clue as to what PIPE 
was!

Dare I say, "wtf?" since when fo I have to specify such? Shouldn't importing 
the subprocess module make all its methods available? I can't remember having to do this 
before.
It is really like any other module. If you just import subprocess, you
can access all its methods and attributes by spelling it out:

import subprocess
handler = subprocess.Popen(['cat'], stdout=subprocess.PIPE,
stdin=subprocess.PIPE)

Or you can import just the names you will use in the global namespace:

from subprocess import Popen, PIPE
handler = Popen(['cat'], stdout=PIPE, stdin=PIPE)

HTH,

It does help. I never knew this. I don't remember seeing this quirk before.

Thanks.


I don't know how much you've used Python, but you were already using os.popen(). It's the same thing. In order to reference a symbol defined in another module, you either have to qualify that symbol with the module name (like the "os." prefix), or use the fancier from xx import yy statement.

How about if I elaborate a bit:

When you do
import   mymodule

you've added exactly one symbol to your "global" namespace, the symbol mymodule.

If you do
from  mymodule import symbol1, symbol2, symbol3

you do the equivalent of three assignment statements, adding three symbols to your global namespace.

symbol1 = mymodule.symbol1
symbol2 = mymodule.symbol2
symbol3 = mymodule.symbol3


HTH
DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to