[Python-Dev] shellwords

Gustavo Niemeyer niemeyer@conectiva.com
Wed, 16 Apr 2003 16:23:27 -0300


> Cool.  Based on this thread and an experiment I tried, some obvious (to me)
> things come to mind:
> 
>     * get_token() needs to be fixed to handle the 'bar'asd'foo' case
> 
>     * the shlex class should handle strings as input, not just file-like
>       objects
> 
>     * get_word() or get_words() methods in the shlex class could implement
>       the shellwords functionality

Ok, it was easier than I imagined. Here's an example of the new shlex.

Maintaining the old behavior (notice that now strings are
accepted as arguments):

>>> import shlex
>>> l = shlex.shlex("'foo'a'bar'")
>>> l.get_token()
"'foo'"
>>> l.get_token()
"a'bar'"

New behavior:

>>> l = shlex.shlex("'foo'a'bar'", posix=1)
>>> l.get_token()
'fooabar'

Introduced iterator interface:

>>> for i in shlex.shlex("'foo'a'bar'"):
...   print i
... 
'foo'
a'bar'

New function, mimicking shellwords:

>>> shlex.split_args("'foo'a'bar' -o='foo bar'")
['fooabar', '-o=foo bar']


I'm not sure if "posix" and "split_args" are the best names for these
features. Suggestions?

I've just commited patch #722686 (and assigned to Guido, as he suggested
recently ;-).

-- 
Gustavo Niemeyer

[ 2AAC 7928 0FBF 0299 5EB5  60E2 2253 B29A 6664 3A0C ]