简单的想法:1个参数,3个结果
argparse python模块的文档虽然非常出色,但对于我的小小初学者大脑来说,现在太多了。 我不需要在命令行上进行数学运算,也不需要在屏幕上插入格式化线或更改选项字符。 我想要做的就是“如果arg是A,那么做到这一点,如果B做到了,如果以上都没有显示帮助并退出”。
我对原始问题的理解有两方面。 首先,就最简单可能的考虑范例而言,我很惊讶我没有在这里看到它。 当然,简单来说,这也是所有开销都很小的权力,但它可能会让你开始。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("a")
args = parser.parse_args()
if args.a == 'magic.name':
print 'You nailed it!'
但是这个立场论点现在是必需的。 如果您在调用此程序时将其忽略,则会出现有关缺少参数的错误。 这导致我到原始问题的第二部分。 马特威尔基似乎想要一个没有命名标签的单个可选参数( - 选项标签)。 我的建议是修改上面的代码,如下所示:
...
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
(带有多个参数)的方式:
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
在你的情况下只需添加一个参数。
argparse
文档相当不错,但留下了一些可能不明显的有用细节。 (@Diego Navarro已经提到了其中的一些,但我会尽量扩大他的回答。)基本用法如下:
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
您从parse_args()
返回的对象是一个'Namespace'对象:一个对象,其成员变量以您的命令行参数命名。 Namespace
对象是你如何访问你的参数和与它们相关的值:
args = parser.parse_args()
print args.my_foo
print args.bar_value
(请注意,在命名变量时, argparse
在您的参数名称中用下划线替换' - '。)
在许多情况下,您可能希望仅将参数用作不带任何价值的标志。 你可以像这样在argparse中添加这些:
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
上面将分别创建名为'foo'和值为True的变量,'no_foo'的值为False:
if (args.foo):
print "foo is true"
if (args.no_foo is False):
print "nofoo is false"
另请注意,添加参数时可以使用“required”选项:
parser.add_argument('-o', '--output', required=True)
这样,如果你在命令行省略了这个参数, argparse
会告诉你它缺失并停止执行你的脚本。
最后,请注意,使用vars
函数可以创建参数的字典结构,如果这样可以让您的生活更轻松。
args = parser.parse_args()
argsdict = vars(args)
print argsdict['my_foo']
print argsdict['bar_value']
正如你所看到的, vars
返回一个字典,其中你的参数名称作为关键字,它们的值作为呃值。
还有很多其他的选择和你可以做的事情,但是这应该包括最基本的,常见的使用场景。
链接地址: http://www.djcxy.com/p/28549.html上一篇: Simple argparse example wanted: 1 argument, 3 results
下一篇: argparse module How to add option without any argument?