ArgumentParser对象没有'add_option'属性 при передаче флагов
学习Python的第三天。
我正在尝试理解如何从命令行传递参数,并用这个参数调用一个函数。不过,我遇到了以下错误:
Traceback (most recent call last):
File "main.py", line 18, in <module>
parser.add_option("-l", action="callback", callback=printLogs)
AttributeError: 'ArgumentParser' object has no attribute 'add_option'
代码在这里:
import argparse
def printLogs():
print("logs!")
parser = argparse.ArgumentParser()
parser.add_argument('-e','--entry', type=str, help='New entry',required=False)
parser.add_option("-l", action="callback", callback=printLogs)
args = parser.parse_args()
我明白parser.add_option这个方法在parser里是不存在的,这一点很清楚。我也看到根据这个链接,OptionParser已经被淘汰了。所以,OptionParser不再使用。
我的问题是:我该如何解析-l这个参数,以便在传入时调用printLogs函数呢?
1 个回答
0
我会这样来实现这个功能:
import argparse
def printLogs():
print("logs!")
parser = argparse.ArgumentParser()
parser.add_argument('-e','--entry', type=str, help='New entry')
parser.add_argument("-l", action="store_true", help='print logs')
args = parser.parse_args()
if args.l:
printLogs()
argparse
的主要作用是解析输入的内容(也就是sys.argv
),然后给你一组参数值(args
其实就是一个简单的namespace
对象)。而callbacks
是optparse
中的一个概念,这个在argparse
里没有包含。
文档中的FooAction
示例,http://docs.python.org/3.4/library/argparse.html#action,做的事情有点像这个optparse
的回调。它在被调用时会打印一些信息,然后做一件重要的事情——在命名空间里设置一个值。