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