无法解决Python argparse错误'对象没有属性'

时间:2014-03-17 01:37:09

标签: python argparse

当我运行此代码时,我得到了

AttributeError: 'ArgumentParser' object has no attribute 'max_seed'

这是代码

import argparse
import ConfigParser

CFG_FILE='/my.cfg'

# Get command line arguments
args = argparse.ArgumentParser()
args.add_argument('verb', choices=['new'])
args.add_argument('--max_seed', type=int, default=1000)
args.add_argument('--cmdline')
args.parse_args()

if args.max_seed:
    pass

if args.cmdline:
    pass

我的源文件名为" fuzz.py"

2 个答案:

答案 0 :(得分:8)

您应首先初始化解析器和参数,然后才能从parse_args()获取实际参数(请参阅文档中的example):

import argparse
import ConfigParser

CFG_FILE='/my.cfg'

# Get command line arguments
parser = argparse.ArgumentParser()
parser.add_argument('verb', choices=['new'])
parser.add_argument('--max_seed', type=int, default=1000)
parser.add_argument('--cmdline')

args = parser.parse_args()
if args.max_seed:
    pass

if args.cmdline:
    pass

希望有所帮助。

答案 1 :(得分:0)

如果您在另一个类中使用argparse解析的参数(在您进行self.args = parser.parse_args()的某个地方),则可能需要显式地告诉您的分析器忽略Namespace类型检查。正如@fransAvoid Pylint warning E1101: 'Instance of .. has no .. member' for class with dynamic attributes 所说:

  

只需提供现在对我有用的答案-如[   编译器] [1]建议您可以在   您的项目.pylintrc

[TYPECHECK]
ignored-classes=Namespace
     

[1]:https://stackoverflow.com/users/2085149/the-compiler