我试图了解如何从命令行传递标志并使用该标志调用函数。但是,我收到以下错误:
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。这很清楚。我还可以看到OptionParser已按this link弃用。所以,OptionParser已经出局了。
问题是:如何解析-l参数,以便在传递printLogs函数时调用它?
答案 0 :(得分: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
回调的操作。它在调用时打印一些信息,然后重要的是 - 在命名空间中设置一个值。