2010-12-21 5 views
2

In der Regel kann man optparse's Methode parse_args einfach ohne Argumente aufrufen. Wenn jedoch ein anderer Argumentsatz als der von sys.argv angegeben werden muss, kann dieser an parse_args übergeben werden.Python Optarse aus Argument String

Aber was macht man, wenn man eine Zeichenfolge, nicht eine Liste an parse_args übergeben muss?

Ich brauche wirklich eine Funktion, die dies tut:

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

Da

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

es nicht schneiden. Irgendwelche Gedanken?

Antwort

5

Dies ist, was das shlex Modul ist für (na ja, es ist eine Sache, dass es speziell für ... ist):

>>> 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

Verwenden Sie das shlex Modul hierfür:

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