如何解决Python argparse可选参数占用至少两个命令行参数
我正在编写一个程序,用于处理预定义文件夹中的所有个文件。 (可选)它将仅处理指定文件夹中的某些指定文件。为此,我想使用可选的命令行参数-s
或--specify-files
。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-s","--specify-files",type=str,Metavar="FOLDER FILES",nargs="+",help="Will process specified FILES in specified FOLDER. Specify at least one file. Folder path and each file name must be separated by space")
args = parser.parse_args("-s ~/custom/folder file1.txt file2.txt file34.txt".split())
print(args)
输出:
Namespace(select_files=['~/custom/folder','file1.txt','file2.txt','file34.txt'])
程序从这里知道args.select_files[0]
是文件夹路径,args.select_files[1:]
是要处理的文件列表。
感谢nargs="+"
,如果用户未指定任何内容,ArgumentParser会发出警告,但是我想知道如果用户输入的参数少于两个,我该如何出错并警告用户:
args = parser.parse_args("-s ~/custom/folder".split())
当前输出:
Namespace(specify_files=['~/custom/folder'])
预期:
usage: minimal.py [-h] [-s [FOLDER FILES ...]]
minimal.py: error: argument -s/--specify-files: expected at least two arguments
在我的程序中,-s
的少于两个参数都没有意义。我可以很容易地为此编写检查,并在parser
解析完参数后引发错误,但是我更愿意在parser.parse_args
输出命名空间对象之前是否已经引发错误。如果您知道我的意思,类似nargs="2+"
的内容在这里会很方便。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。