[Python-Dev] Re: Re: subprocess - updated popen5 module
astrand at lysator.liu.se
Sat Oct 9 14:04:33 CEST 2004
On Sat, 9 Oct 2004, Fredrik Lundh wrote:
> > I'd prefer not to rename the call() function. The name is short and
> > simple, and the function is very much used. I'm positive to renaming the
> > callv() function, though. One obvious name would be "calll", but that's
> > quite ugly. How about "lcall"? Then we can keep the "callv" name for
> > backwards compatibility.
> do we need both? you could rename "callv" to "call", and let people type
> an extra "*" if they want to pass in a list of arguments:
> subprocess.call("stty", "sane", "-F", device)
> subprocess.call(*["stty", "sane", "-F", device])
I'd like "call" to stay as it is. It's interface is pretty clean, and maps
directly to the Popen constructor.
"callv" is only syntactic sugar. It's for people that thinks that:
subprocess.call(["ls", "-l", "/foo/bar"])
...is to ugly compared to:
os.system("ls -l /foo/bar")
With callv, it is:
subprocess.callv("ls", "-l", "/foo/bar")
...which is slighly nicer. The drawback with callv is that it does not
allow specifying the program and it's arguments as a whitespace-separated
string: The entire (first) string would be intepreted as the executable.
So, you cannot do:
subprocess.callv("somewindowsprog.exe some strange command line")
because then the system would try to execute a program called
"somewindowsprog.exe some strange command line", which doesn't exist. You
cannot do this either:
subprocess.callv("somewindowsprog.exe", "some", "strange", "command", "line")
...if somewindowsprog.exe doesn't use the MS C runtime argument rules.
To summarize: call() must stay as it is for completeness. callv() is just
syntactic sugar, but probably deserves to stay as well.
/Peter Åstrand <astrand at lysator.liu.se>
More information about the Python-Dev