parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('-f','--foo', help='Description for foo argument', required=True)
parser.add_argument('-b','--bar', help='Description for bar argument', required=True)
args = vars(parser.parse_args())
args将是包含参数的字典:
if args['foo'] == 'Hello':
# code here
if args['bar'] == 'World':
# code here
...
parser.add_argument("a", nargs='?', default="check_string_for_empty")
...
if args.a == 'check_string_for_empty':
print 'I can tell that no argument was given and I can deal with that here.'
elif args.a == 'magic.name':
print 'You nailed it!'
else:
print args.a
下面是我使用
argparse
(使用多个参数)的方法:args
将是包含参数的字典:在你的例子中,只需添加一个参数。
我对原问题的理解是双重的。首先,对于最简单的argparse示例,我很惊讶在这里没有看到它。当然,简单地说,这也是一个几乎没有电的开销,但它可能会让你开始。
但现在需要这个位置参数。如果在调用此程序时忽略它,则会得到有关缺少参数的错误。这就引出了原问题的第二部分。Matt Wilkie似乎想要一个没有命名标签(选项标签)的可选参数。我的建议是修改上面的代码如下:
可能有一个更优雅的解决方案,但这是可行的,是极简主义的。
argparse
文档相当不错,但遗漏了一些可能不明显的有用细节。(@Diego Navarro已经提到了其中一些,但我将试着稍微扩展一下他的回答。)基本用法如下:从
parse_args()
返回的对象是一个“Namespace”对象:其成员变量以命令行参数命名的对象。Namespace
对象是访问参数及其关联值的方式:(请注意,命名变量时,
argparse
将参数名中的“-”替换为下划线。)在许多情况下,您可能希望将参数简单地用作不带值的标志。您可以在argparse中添加以下内容:
上面将分别创建名为“foo”且值为True的变量和名为“no_foo”且值为False的变量:
还要注意,在添加参数时可以使用“必需”选项:
这样,如果您在命令行
argparse
中省略此参数,将告诉您它已丢失并停止执行脚本。最后,请注意,使用
vars
函数可以创建参数的dict结构,如果这样可以使您的生活更轻松的话。如您所见,
vars
返回一个dict,其中您的参数名是键,它们的值是,er,values。有很多其他的选择和事情你可以做,但这应该涵盖最基本,最常见的使用场景。
相关问题 更多 >
编程相关推荐