在python中,如何以与解析命令行参数字符串相同的方式解析字符串以构造sys.argv
?
我想执行以下操作
首先:允许将可选参数向量传递到我的main
中的runnable.py
:
def main(argv=[]):
argv = argv or sys.argv[1:]
parser = argparse.ArgumentParser(...)
... more parser config ...
args = parser.parse_args(argv)
然后,在另一个模块中,我希望能够从python中使用此主要功能:
argv = how_do_i_do_this('''-f text.txt -o -q "Multi word argument" arg2 "etc."''')
assert(argv == ['-f', 'text.txt', '-o', '-q', 'Multi word argument', 'arg2', 'etc.'])
runnable.main(argv)
使用shlex.split
:
shlex.split
也,>>> import shlex
>>> shlex.split('''-f text.txt -o -q "Multi word argument" arg2 "etc."''')
['-f', 'text.txt', '-o', '-q', 'Multi word argument', 'arg2', 'etc.']
。不要将Python mutable defaults are the source of all evil用作argv=[]
的默认参数,请使用main
,然后在argv=None
的正文中检查其类型:
main