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

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


白衣非少年
浏览 163回答 1
1回答

开满天机

使用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:]# ... 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python