On Tue, Nov 23, 2010 at 11:28 AM, Brett Bowman <bnbow...@gmail.com> wrote: > I ran into an interesting problem trying to spawn a subprocess, so I thought > I'd ask if the experts could explain it to me. I'm spawning a subprocess to > run "pdf2txt.py", which is a tool that is distributed with PDFminer to do > moderately advanced text-dumps of PDFs. Yet when I run the same code on my > two dev machines - one Win XP, the other Ubuntu 10.04 or 10.10 - it only > works on the former and not the later. And its not terribly complicated > code. > # Code Start > sp_line = 'python pdf2txt.py -p 1 -o %s "%s"' % ('temp.out', pdf_filename) > print sp_line > sp = subprocess.Popen(sp_line) <snip> > python pdf2txt.py -p 1 -o temp.out "Aarts et al (2009).pdf" > That command works on both systems when copied directly to the command-line, > and the python script it is a part of works on the Windows machine, but I > can't the script to work on Ubuntu for the life of me. What am I missing?
Quoting the docs (for the Nth time; emphasis added): """ On Unix, with shell=False (default): args should normally be a sequence. ***If a string is specified for args***, it will be used as the name or path of the program to execute; ***this will only work if the program is being given no arguments.*** """ http://docs.python.org/library/subprocess.html#subprocess.Popen Fixed version: sp_args = ['python', 'pdf2txt.py', '-p', '1', '-o', 'temp.out', pdf_filename] sp = subprocess.Popen(sp_args) Cheers, Chris -- http://blog.rebertia.com -- http://mail.python.org/mailman/listinfo/python-list