4
我想用argparse实现一个只有一个或一个被接受的方式的命令行参数。应该拒绝多次发生。只有一个命令行参数与argparse
我用下面的代码
#!/usr/bin/env python3
import argparse
cmd_parser = argparse.ArgumentParser()
cmd_parser.add_argument('-o', dest='outfile')
cmd_line = cmd_parser.parse_args()
print(cmd_line.outfile)
一个参数给出预期的结果:
./test.py -o file1
file1
当发出参数两次,第一次出现被自动忽略:
./test.py -o file1 -o file2
file2
我也试过nargs=1
和action='store'
而没有达到预期的结果。
我如何告诉argparse拒绝多个参数发生?
谢谢 - 按预期工作。我在argparse中寻找解决方案,这就是为什么我忽略了自定义Action方法。 – sd2k9 2013-02-17 14:46:36
我会添加到检查默认值,如果getattr(名称空间,self.dest)不是None和self.default是None:'因为如果你指定一个默认值,它会失败,而不是因为参数重复。 – lasote 2017-11-02 08:25:32
@lasote:我认为使用这个条件将允许'-o'被多次指定而不会引发错误,因为如果指定非None默认值,'self.default'将不会是'None'。我已经改变了上面的代码以适应上面的不同方式的默认值。 – unutbu 2017-11-02 11:59:29