[Pythonmac-SIG] Escaping commandline strings

Chris Weisiger cweisiger at msg.ucsf.edu
Tue Jan 4 23:23:16 CET 2011


On Tue, Jan 4, 2011 at 1:56 PM, Ned Deily <nad at acm.org> wrote:

> In article
> <AANLkTik8E7h8-tQW2=F5F30uKe_D99YYtu=0DvYLKzCO at mail.gmail.com>,
>  Chris Weisiger <cweisiger at msg.ucsf.edu> wrote:
> > I want to sanitize some strings (e.g. escape apostrophes, spaces, etc.)
> > before passing them to the commandline via subprocess. Unfortunately I
> can't
> > seem to find any built-in function to do this. Am I really going to have
> to
> > write up my own sanitizer? Not that it'd be much effort, but I'd much
> rather
> > use an official function than risk forgetting something.
>
> The subprocess doc show how to use shlex to parse a shell-like command
> string.  I'm not sure I understand your use case but is there a reason
> you can't use 'shell=False' and set up the arguments yourself, thus
> avoiding the need for escapes?  Even if you really need to have a shell
> execute the string, you should be able to set up the arguments and call
> the shell directly.
>
> http://docs.python.org/library/subprocess.html
>

What I'm doing here is writing out a shell script for each of a list of
files I'm processing. The shell script has "hard-coded" paths in it
corresponding to the input file; subprocess is used solely to invoke the
shell script.

I recognize this is kind of a weird setup. It's mostly here so I can
delegate a chunk of functionality to be handled by a remote server queue --
just transfer the shell script over (as well as the input files), then run a
queue-submit program with the shell script as the argument. I can't do that
kind of thing just with subprocess.  The shell script approach also makes
some aspects of debugging more straightforward, but that's not why it's
here.


> --
>  Ned Deily,
>  nad at acm.org
>
>
-Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pythonmac-sig/attachments/20110104/ad820bbe/attachment.html>


More information about the Pythonmac-SIG mailing list