Python Optparse из аргумента строки - PullRequest
2 голосов
/ 22 декабря 2010

Обычно можно просто вызвать метод optparse parse_args без каких-либо аргументов. Если, однако, нужно предоставить набор аргументов, отличный от sys.argv, если он может быть передан parse_args.

Но что делать, если нужно передать строку, а не список в parse_args?

Мне действительно нужна функция, которая делает это:

>>> argument_string = "-a arga -b \"argument b\" arg1 arg2"
>>> parse_arguments(argument_string)"
['-a', 'arga', '-b', 'argument b', 'arg1', 'arg2']

Поскольку

>>> argument_string.split(" ")
['-a', 'arga', '-b', '"argument', 'b"', 'arg1', 'arg2']

не сокращает это. Есть мысли?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Это то, для чего предназначен модуль shlex (ну, это единственное, для чего он предназначен ...):

>>> import shlex
>>> argument_string = "-a arga -b \"argument b\" arg1 arg2"
>>> l = shlex.split(argument_string)
>>> l
['-a', 'arga', '-b', 'argument b', 'arg1', 'arg2']
4 голосов
/ 22 декабря 2010

Для этого используйте модуль shlex :

>>> import shlex
>>> shlex.split("-a arga -b \"argument b\" arg1 arg2")
['-a', 'arga', '-b', 'argument b', 'arg1', 'arg2']
...