如何将字符串转换为命令行参数的向量?

问题描述 投票:0回答:1

在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)
python command-line-arguments
1个回答
1
投票

使用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
© www.soinside.com 2019 - 2024. All rights reserved.