Python os模块可读取文件夹内容但无法修改,读取txt存字典报错
解决遍历TXT文件并存储到字典时的报错问题
看起来你已经能成功定位目标文件夹、获取到TXT文件名了,但在把文件名和内容存入字典的环节卡壳了。虽然你贴的报错信息不完整,但根据这类场景的常见问题,我整理了几个最可能的原因和对应的解决办法:
1. 误用字典的append()方法(最常见踩坑点)
字典本身没有append()方法——这个方法是列表专属的!如果你试图给字典调用append(),必然会抛出AttributeError。正确的做法是直接用「文件名作为键,文件内容作为值」来赋值:
# 错误示例(会触发报错) file_dict.append({filename: content}) # 正确写法 file_dict[filename] = content
2. 文件读取时的编码不兼容
Windows系统下的TXT文件常使用gbk或utf-8-sig编码,如果直接用Python默认的utf-8编码读取,很容易抛出UnicodeDecodeError。读取时手动指定编码即可:
with open(file_path, 'r', encoding='utf-8-sig') as f: content = f.read()
如果还是报错,可以试试encoding='gbk';要是能接受丢失少量不可解码字符,也可以加errors='ignore'参数跳过异常。
3. 文件路径拼接错误
你可能只拿到了文件名,但没有和目标文件夹路径拼接,导致打开文件时触发FileNotFoundError。正确的路径拼接一定要用os.path.join():
import os location = "你的目标文件夹路径" # 初始化空字典 file_dict = {} for filename in os.listdir(location): if filename.endswith('.txt'): # 拼接完整文件路径 file_path = os.path.join(location, filename) with open(file_path, 'r', encoding='utf-8-sig') as f: content = f.read() # 存入字典 file_dict[filename] = content
4. 字典未提前初始化
如果你的存储字典是在方法内部临时创建但没正确返回,或者根本没初始化就直接赋值,也会触发报错。一定要确保在使用字典前先初始化空字典:
# 提前初始化空字典 file_dict = {}
要是能把第21行的代码和完整的报错信息贴出来,我能更精准地帮你定位问题!
内容的提问来源于stack exchange,提问作者Christian Gentry
相关产品推荐
相关产品推荐

