【发布时间】:2021-05-25 05:53:09
【问题描述】:
我正在尝试解析不确定数量的命令行参数,但它们可能是空格分隔的。所以对于例如
./program.py "IBM US Equity" "FB US Equity"
应该返回一个包含两个元素的参数列表
["IBM US Equity", "FB US Equity"]
然而我最终得到的是
["IBM", "US", "Equity", "FB", "US", "Equity"]
有没有办法告诉 argparse 将引号内的字符串视为一个参数?我正在使用
nargs='+'
这是定义我的 args 架构的 yaml:
args:
ticker_list:
help: Compute result for list of tickers entered after this. All tickers must
be in quotation delimited strings, e.g. "IBM US Equity"
nargs: '+'
metavar: ticker
这是我在阅读 yaml 后将其添加到 argparse 的方法:
with open("reg_test_config.yml") as in_file:
params = yaml.safe_load(in_file)
for name, configs in params.pop("args").items():
parser.add_argument(name, **configs)
【问题讨论】:
-
您不需要
argparse。只需使用os.argv。 -
默认将引用的参数视为单个项目。你必须做一些事情来告诉它分裂它们。发布您的代码。
-
查看
sys.argv列表。这就是parser.parse_args()所看到的。argparse不会拆分该列表中出现的字符串。 -
请edit 也显示读取参数的代码部分,而不仅仅是解析器定义。
标签: python python-3.x string arguments argparse