newbie question about subprocess.Popen() arguments
Peter Otten
__peter__ at web.de
Thu May 23 03:32:40 EDT 2013
Alex Naumov wrote:
> I'm trying to call new process with some parameters. The problem is that
> the last parameter is a "string" that has a lot of spaces and different
> symbols like slash and so on. I can save it in file and use name of this
> file as parameter, but my question is: how to make it without additional
> saving?
>
> import subprocess as sp
>
> rc = sp.Popen(["prog", "--options", "<", msg], stdin=sp.PIPE,
> stdout=sp.PIPE)
> stdout = rc.communicate()[0]
> print stdout
> p.s.
> type(msg) => <type 'str'>
The < operator is a shell feature, not an argument, and msg is intended to
be send to prog's stdin. The communicate() method accepts a parameter for
that. So:
rc = sp.Popen(["prog", "--options"], stdin=sp.PIPE, stdout=sp.PIPE)
stdout = rc.communicate(msg)[0]
More information about the Python-list
mailing list