将可变长度列表用作位置参数(argparse)?

时间:2018-11-05 15:04:34

标签: python python-3.x command-line argparse

我如何有两个位置参数通过命令行传递给程序,其中每个参数是可变长度文件的列表?我目前正在使用argparse来获取参数。

我知道您可以使用可选的命名参数进行类似操作,但是可以使用没有标签(--arg)来描述一个参数在哪里停止而下一个参数在哪里开始的位置参数吗?

如果有帮助,不同的文件将具有不同的文件扩展名。

1 个答案:

答案 0 :(得分:2)

如果每组文件都有其自己的文件扩展名,则参数已被描绘出来。您只需让参数解析器将参数放入一个较长的列表中,然后再将它们分开即可。

parser.add_argument('filenames', nargs='*')


def getByExtension(lst, ext):
  return [f for f in lst if f.endswith(ext)]


args = parser.parse_args()

pyFiles = getByExtension(args.filenames, '.py')
scmFiles = getByExtension(args.filenames, '.scm')

请注意,由于列表理解无关紧要,因此用户不必按任何特定顺序保留参数即可。