我正在学习 argparse 模块,我想询问 0 或 2 个文件。
parser.add_argument("infile", nargs = {0,2}, type=argparse.FileType('r'))
Run Code Online (Sandbox Code Playgroud)
它应该与:
python prog.py
python prog.py infile1 infile2
Run Code Online (Sandbox Code Playgroud)
但不包括:
python prog.py infile1
python prog.py infile1 infile2 infile3
Run Code Online (Sandbox Code Playgroud)
实际上我使用了 2 个不同的参数“nargs='?'” 我测试
sys.argv == 1 or sys.argv == 3
Run Code Online (Sandbox Code Playgroud)
我曾经想要这个,发现argparse原生不支持,所以我就这样写了。
#!/usr/bin/env python
import argparse as ap
parser = ap.ArgumentParser(usage='%(prog)s [-h] [a b]\n')
parser.add_argument('ab',
nargs='*',
help='specify 2 or 0 items',
default=['a', 'b'])
args = parser.parse_args()
if len(args.ab) != 2:
parser.error('expected 2 arguments')
print(args.ab)
Run Code Online (Sandbox Code Playgroud)
请注意,在创建解析器时要覆盖使用消息,否则默认使用消息会产生误导。