首页 > 解决方案 > Python argparse - 从 cmdline 读取引号内的多个字符串

问题描述

我正在尝试解析无限数量的命令行参数,但它们可能是空格分隔的。所以例如

./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)

标签: pythonpython-3.xstringargumentsargparse

解决方案


您可以使用以下代码来获得:

import sys

all_inputs = [sys.argv[1], sys.argv[2]]

print(all_inputs)

只需在终端中将上述代码作为 python 文件运行并传递您的字符串。


推荐阅读