Access to raw command line?

Bjoern Schliessmann usenet-mail-0306.20.chr0n0ss at spamgourmet.com
Thu Apr 26 12:52:01 CEST 2007


Pieter Edelman wrote:

> ./myprog.py -t *.gpx *.jpg
> 
> This seems like a sensible option at first sight, but it's
> difficult to implement because the wildcard is expanded by the
> shell, 

(in *nix only)

> so sys.argv gets a list containing "-t", all .gpx files and 
> all .jpg files. With this list, there's no way to tell which files
> belong to the "-t" switch and which are arguments (other than
> using the extension).
> 
> One possible way to work around this is to get the raw command
> line and do the shell expansions ourselves from within Python.
> Ignoring the question of whether it is worth the trouble, does
> anybody know if it is possible to obtain the raw (unexpanded)
> command line?

Breaking the "de-facto standards" isn't a good idea, IMHO.

> Alternatively,  does anybody have suggestion of how to do this in
> a clean way?

First, you could define another wildcard character, or let users
escape the * like this: ./myprog.py -t \*.gpx \*.jpg

Let users give a list of files to process, and default to looking
for the same filename without image extension and with ".gpx". 
E. g.:

./myprog.py -t .gpx *.jpg

will expand to:

./myprog.py -t .gpx a.jpg b.jpg [...] z.jpg

What your program's "policy" would be depends on its exact function.
I'm thinking about if the program silently fails if it doesn't find
a .gpx file for one .jpg, for example, or if it complains about it.

Regards,


Björn

-- 
BOFH excuse #380:

Operators killed when huge stack of backup tapes fell over.




More information about the Python-list mailing list