我正在尝试编写一个程序来读取配置文件,但在测试时遇到了这个错误:
self.connection_attempts = self.config_file.get('CONNECTION_ATTEMPTS', 'TIME')
AttributeError: 'list' object has no attribute 'get'
我很确定这是我无法获得的东西,但是我想知道问题出在哪里几个小时。
我的__init__
方法如下所示:
import simpleconfigparser
class ReportGenerator:
def __init__(self):
self.config_parser = simpleconfigparser.configparser()
self.config_file = config_parser.read('config.ini')
self.connection_attempts = config_file.get('CONNECTION_ATTEMPTS', 'TIME')
self.connection_timeout = config_file.get('CONNECTION_TIMEOUT', 'TIMEOUT')
self.report_destination_path = config_file.get('REPORT', 'REPORT_PATH')
此代码使用SimpleConfigParser包。
答案 0 :(得分:2)
您希望config_parser.get()
不是config_file.get()
。 config_parser.read()
只是返回填充配置对象后成功读取的配置文件列表。 (通常称为config
或cfg
,而非config_parser
)。
此列表(config_file
)在您的代码中没有用处,您根本不会捕获它。
from simpleconfigparser import simpleconfigparser
TIME = 5
TIMEOUT = 10
REPORT_PATH = '/tmp/'
class ReportGenerator:
def __init__(self):
self.config = simpleconfigparser()
config.read('config.ini')
self.connection_attempts = config.get('CONNECTION_ATTEMPTS', TIME)
self.connection_timeout = config.get('CONNECTION_TIMEOUT', TIMEOUT)
self.report_destination_path = config.get('REPORT', REPORT_PATH)
我的猜测也是,您以错误的方式使用.get()
中的默认值,但我无法确定您提供的信息。