2010-12-21 78 views
2

通常,可以簡單地調用optparse的方法parse_args而不帶任何參數。但是,如果需要提供與sys.argv不同的參數集,則可以傳遞給parse_args來自參數字符串的Python Optparse字符串

但是,如果需要傳遞一個字符串而不是列表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'] 

不剪。 有什麼想法?

回答

5

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

使用這個shlex模塊:

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