为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

白衣非少年 2022-07-19 20:50:11
在 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:]


# ... 


查看完整回答
反对 回复 2022-07-19
  • 1 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号