【发布时间】:2012-10-21 21:59:40
【问题描述】:
我正在创建一个脚本,它使用 argparse 接受位置参数和可选参数。我浏览了 Doug 的教程和 python 文档,但找不到答案。
parser = argparse.ArgumentParser(description='script to run')
parser.add_argument('inputFile', nargs='?', type=argparse.FileType('rt'),
parser.add_argument('inputString', action='store', nargs='?')
parser.add_argument('-option1', metavar='percent', type=float, action='store')
parser.add_argument('-option2', metavar='outFile1', type=argparse.FileType('w'),
parser.add_argument('-option3', action='store', default='<10',
args = parser.parse_args()
# rest of script.... blah blah
如您所见,我想要 2 个位置参数和 3 个可选参数。但是,当我尝试在终端中运行它时,它不会检查位置! 如果我尝试:python script.py 输入文件 当找不到 inputString 的值时,它将正常运行并在脚本中途输出错误。 如果我尝试: python script.py xxx ;输出是:
usage script.py [-h] [-option1] [-option2] [-option3]
谁能解释为什么它不检查位置参数?
【问题讨论】:
-
如果你想让
inputFile和`inputString成为必填参数,你为什么要设置nargs='?'? -
好的,我尝试删除
nargs并且成功了!我正在使用另一个示例,python 文档将nargs指定为使用 1 个参数。我使用它是为了使 args.inputFile 不会同时使用为 inputFile 和 inputString 提供的名称。那么现在这样说是否正确,您只将 nargs 用于可选参数?非常感谢! -
您也可以使用
nargs='*'或nargs='+'用于多个参数;请参阅下面的答案和the documentation。
标签: python argparse optional-arguments