【发布时间】:2016-07-24 17:53:25
【问题描述】:
我正在使用 python 的 argparse 为我的软件中的流行函数创建命令行绑定。更具体地说,我说的是this function。
通常,当我希望 CLI 函数获取 bash 中的输入列表时,我可以执行以下操作:
whateverfunction DSC_4{322..399}*
这会将函数从DSC_4322 到DSC_4399 的所有值都传递给任何后缀。现在,很明显,如果我只是传递一个带有argparse 的刺痛,这意味着要在 python 中爬行路径:
parser.add_argument("destination", help="Path to store files into (excluding alphanumeric storage directories)", type=str)
是否有任何优雅的方式允许argparse 位置参数处理机器人路径和文件列表?
我唯一能想到的就是检测字符串中的荣誉并编写一个 python 脚本,该脚本为此类输入生成一个列表 - 并为任何其他类型的输入执行树爬行......但我希望有可能是更好的方式。
【问题讨论】:
-
您在寻找
nargs='+'吗? -
如果您希望 shell 为您扩展文件名,
nargs='+'是正确的方法。如果您希望 python 进行扩展,您需要将规范放在引号中 (whateverfunction "DCS_4{322..399}*),以便 shell 将规范向下传递。 -
argparse处理您在sys.argv列表中提供的内容。