Python连接Twitter API时出现KeyError: 'twitter'的原因与解决方法
问题:读取config.ini时触发KeyError: 'twitter'
运行连接Twitter API的代码时出现如下报错:
File "c:\Users\Dino\Projects\TwitterNLP\twitter_api.py", line 20, in <module> api_key = config['twitter']['api_key'] File "C:\Users\Dino\AppData\Local\Programs\Python\Python39\lib\configparser.py", line 963, in __getitem__ raise KeyError(key) KeyError: 'twitter'
使用的代码:
import tweepy import configparser config = configparser.ConfigParser() config.read('config.ini') api_key = config['twitter']['api_key'] api_key_secret = config['twitter']['api_key_secret'] access_token = config['twitter']['access_token'] access_token_secret = config['twitter']['access_token_secret'] auth = tweepy.OAuthHandler(api_key, api_key_secret) auth.set_access_token(access_token, access_token_secret) api = tweepy.API(auth) print(api.me().name)
config.ini文件内容:
[twitter] api_key = api_key_secret = access_token = access_token_secret =
原因分析
KeyError: 'twitter'说明configparser未成功读取到config.ini中的[twitter]配置节,核心原因是config.ini文件未被正确加载,常见触发场景:
- 代码运行的工作目录与config.ini实际存放目录不一致,导致找不到文件
- config.ini存在隐性格式问题(如编码错误、特殊字符干扰)
解决步骤
确认文件路径匹配
- 先打印当前工作目录,验证是否与config.ini所在目录一致:
在代码中添加:import os print(os.getcwd()) - 如果输出路径不是
c:\Users\Dino\Projects\TwitterNLP,将config.ini的路径改为绝对路径:config.read(r'c:\Users\Dino\Projects\TwitterNLP\config.ini')
或者直接把config.ini移动到代码运行的工作目录下。
- 先打印当前工作目录,验证是否与config.ini所在目录一致:
验证文件加载状态
在config.read()后添加检查代码,提前发现加载失败问题:files_read = config.read('config.ini') if not files_read: raise FileNotFoundError("config.ini文件未找到或加载失败")检查配置文件格式
确保[twitter]行没有多余空格或特殊字符,同时将文件编码改为UTF-8(无BOM),可通过记事本打开后重新保存为UTF-8格式。补充API密钥
后续运行代码前,需将实际的Twitter API密钥填写到config.ini对应字段中,示例:[twitter] api_key = 你的实际API密钥 api_key_secret = 你的实际API密钥密钥 access_token = 你的实际访问令牌 access_token_secret = 你的实际访问令牌密钥
内容的提问来源于stack exchange,提问作者dinosaurslayer
相关产品推荐
相关产品推荐

