Subprocess Call works on Windows, but not Ubuntu

Chris Rebert clp2 at
Tue Nov 23 20:37:05 CET 2010

On Tue, Nov 23, 2010 at 11:28 AM, Brett Bowman <bnbowman at> 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 "", 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 -p 1 -o %s "%s"' % ('temp.out', pdf_filename)
> print sp_line
> sp = subprocess.Popen(sp_line)
> python -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.***

Fixed version:
sp_args = ['python', '', '-p', '1', '-o', 'temp.out', pdf_filename]
sp = subprocess.Popen(sp_args)


More information about the Python-list mailing list