[python-win32] does pipes.quote() work properly on Windows?

Bill Janssen janssen at parc.com
Sat May 22 03:28:26 CEST 2010


Tim Roberts <timr at probo.com> wrote:

> Bill Janssen wrote:
> > Anyone know if the quote() function in the "pipes" module does the right
> > thing for cmd.exe pipes?
> >   
> 
> No, it doesn't.  It uses sh rules, which aren't the same.
> 
> > If not, what is the right thing?
> 
> Unfortunately, command line parsing in Windows is not centralized in the
> shell.  To satisfy cmd.exe, you can safely surround each file name in
> double quotes.  Whether the application knows how to handle that or not
> is up to the application (although most do it correctly).  Remember that
> this is only necessary when passing names to the command shell.  The
> Windows APIs don't want the quotes.

I'm actually not passing file names.  I'm passing argument strings,
which may contain spaces, quotes, and other things.  For instance,

   myprogram --title="That's the game! says Mike "Hammer" Brotsky" --file=...

"myprogram" is a Python program, and expects to get the whole "--title"
argument as a single element of sys.argv.

On Unix, I use

   arg = "--title=%s" % pipes.quote(title)

to achieve that effect.  What's the equivalent on Windows?  Since
cmd.exe also supports pipelines, I'd sort of expect it to do the right
thing on Windows, too.

Bill


More information about the python-win32 mailing list