在 python 中,如何以与解析命令行参数字符串相同的方式解析字符串以构造sys.argv?我想做以下第一:允许main在 my中传递一个可选的参数向量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)
1 回答

开满天机
TA贡献1786条经验 获得超13个赞
使用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 可变默认值是万恶之源。不要argv=[]用作 的默认参数main,使用argv=None然后在 的主体内检查其类型main:
def main(argv=None):
if argv is None:
argv = sys.argv[1:]
# ...
添加回答
举报
0/150
提交
取消