首页 > 解决方案 > 使用 ConfigParser 读取 API 密钥

问题描述

我正在尝试使用 ConfigParser 读取 API 密钥,但我得到了回溯:

 NoSectionError                            Traceback (most recent call last)
<ipython-input-26-c861940d7d10> in <module>
      5 configFilePath = r'c:\twitter.cfg'
      6 config.read(configFilePath)
----> 7 APP_KEY = config.get('credentials','app_key')
      8 APP_SECRET = config['credentials']['app_secret']
      9 twitter = Twython(APP_KEY, APP_SECRET, oauth_version=2)

~\Anaconda3\lib\configparser.py in get(self, section, option, raw, vars, fallback)
    778         """
    779         try:
--> 780             d = self._unify_values(section, vars)
    781         except NoSectionError:
    782             if fallback is _UNSET:

~\Anaconda3\lib\configparser.py in _unify_values(self, section, vars)
   1144         except KeyError:
   1145             if section != self.default_section:
-> 1146                 raise NoSectionError(section) from None
   1147         # Update with the entry specific variables
   1148         vardict = {}

NoSectionError: No section: 'credentials'

我的代码如下:

config = ConfigParser()
configFilePath = r'c:\twitter.cfg'
config.read(configFilePath)
APP_KEY  = config.get('credentials','app_key')
APP_SECRET  = config['credentials']['app_secret']

我的 twitter.cfg 文件:

[credentials]
app_key = aaaaaaaaaaaaaa
app_secret = aaaaaaaaaaaaaa

可能是什么问题?

标签: pythonconfigparser

解决方案


来自文档

如果不存在任何命名文件,则 ConfigParser 实例将包含一个空数据集

让你的路径和文件存在试试这个:

config = ConfigParser()
configFilePath = r'c:\twitter.cfg'
data=config.read(configFilePath)
if len(data) == 0:
    raise ValueError("Failed to open/find config file")
APP_KEY  = config.get('credentials','app_key')
APP_SECRET  = config['credentials']['app_secret']

推荐阅读