如何使用argparse库解析指定字符串而非命令行参数?
如何使用argparse库解析指定字符串而非命令行参数?
嗨,我来帮你揪出问题所在~
你现在遇到的报错,核心原因是传给parse_known_args的参数格式不对!argparse的参数解析方法需要的是拆分后的参数列表——也就是把每个命令行选项和它的值分成单独的列表元素,而不是把两者揉在同一个字符串里。
你写的args = ["--target foobar"]是把--target和foobar当成了一个整体字符串,argparse根本识别不出这是一个带值的选项,自然会报错说缺少--target参数。
咱们把代码调整一下,把参数拆成两个独立元素就搞定了:
import argparse parser = argparse.ArgumentParser() parser.add_argument("--target", required=True) # 把参数拆分成["--target", "foobar"],而非单个拼接字符串 parsed_args, _ = parser.parse_known_args(args=["--target", "foobar"]) print(parsed_args.target) # 现在会正常输出foobar
简单总结下:parse_known_args的args参数格式要和脚本实际接收命令行参数时的sys.argv[1:]结构一致——每个选项、每个对应的值都得是列表里的独立元素。要是有多个参数,比如再加个--verbose开关,就写成["--target", "foobar", "--verbose"]这种形式就好啦。
备注:内容来源于stack exchange,提问作者hdw3
相关产品推荐
相关产品推荐

