10

我正在构建一个脚本,它使用参数来配置行为,并应读取未定义数量的文件。使用以下代码可以让我读取一个文件。有没有什么方法可以做到这一点,而不必设置另一个参数,告诉脚本应该读取多少个文件?

parser = argparse.ArgumentParser()
parser.add_argument("FILE", help="File to store as Gist")
parser.add_argument("-p", "--private", action="store_true", help="Make Gist private")
4

2 回答 2

25

是的,将您的"FILE"行更改为:

parser.add_argument("FILE", help="File to store as Gist", nargs="+")

这会将所有位置参数收集到一个列表中。如果没有至少一个可以操作,它也会产生错误。

查看nargs 文档

于 2012-11-04T15:37:05.750 回答
6
import argparse

parser = argparse.ArgumentParser()

parser.add_argument('-FILE', action='append', dest='collection',
                    default=[],
                    help='Add repeated values to a list',
                    )

用法:

python argparse_demo.py -FILE "file1.txt" -FILE "file2.txt" -FILE "file3.txt"

在你的python代码中,你可以在collection变量中访问这些,它本质上是一个列表,默认情况下是一个空列表;和一个列表,其中包含您提供给它的任意数量的参数。

于 2012-11-04T15:41:56.537 回答