subprocess.popen function with quotes

skunkwerk skunkwerk at gmail.com
Wed Mar 26 09:46:52 EDT 2008


On Mar 26, 6:44 am, skunkwerk <skunkw... at gmail.com> wrote:
> On Mar 25, 11:04 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> wrote:
>
>
>
> > En Wed, 26 Mar 2008 02:15:28 -0300, skunkwerk <skunkw... at gmail.com>  
> > escribió:
>
> > > On Mar 25, 9:25 pm, "Gabriel Genellina" <gagsl-... at yahoo.com.ar>
> > > wrote:
> > >> En Wed, 26 Mar 2008 00:39:05 -0300, skunkwerk <skunkw... at gmail.com>  
> > >> escribió:
>
> > >> >>    i'm trying to call subprocess.popen on the 'rename' function in
> > >> >> linux.  When I run the command from the shell, like so:
>
> > >> >> rename -vn 's/\.htm$/\.html/' *.htm
>
> > >> >> it works fine... however when I try to do it in python like so:
> > >> >> p = subprocess.Popen(["rename","-vn","'s/\.htm$/
> > >> >> \.html/'","*.htm"],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
>
> > >> >> print p.communicate()[0]
>
> > >> >> nothing gets printed out (even for p.communicate()[1])
>
> > >> I'd try with:
>
> > >> p = subprocess.Popen(["rename", "-vn", r"'s/\.htm$/\.html/'", "*.htm"],
> > >>        stdout=subprocess.PIPE, stderr=subprocess.PIPE,
> > >>        shell=True)
>
> > >> (note that I added shell=True and I'm using a raw string to specify the  
> > >> reg.expr.)
>
> > > Thanks Gabriel,
> > >    I tried the new command and one with the raw string and single
> > > quotes, but it is still giving me the same results (no output).  any
> > > other suggestions?
>
> > My next try would be without the single quotes...
>
> > --
> > Gabriel Genellina
>
> thanks for the input guys,
>   I've tried the suggestions but can't get it to work.  I have a file
> named test.htm in my directory, and when I run the following command:
>
> rename -vn 's/(.*)\.htm$/model.html/' *.htm
>
> from the shell in that directory I get the following output:
> test.htm renamed as model.html
>
> now my python script is called test.py, is located in the same
> directory, and is called from the shell with 'python test.py'
> the contents of test.py:
> import subprocess
>
> p = subprocess.Popen(['rename','-vn','s/(.*)\.htm$/
> model.html/','*.htm'],stdout=subprocess.PIPE,stderr=subprocess.PIPE)
> print p.communicate()[0]
>
> i change to print p.communicate()[1] in case the output is blank the
> first time
>
> this is the output:
> *.htm renamed as model.html
>
> when I add shell=True to the subprocess command, I get the following
> output:
> Usage: rename [-v] [-n] [-f] perlexpr [filenames]
>
> am i doing something wrong?

in addition, when I use Popen without any quotes, or without quotes
for the regular expression, I get an exception.

I'm running ubuntu linux 7.10 with python 2.5.1

thanks



More information about the Python-list mailing list