import os
for root, dirs, files in os.walk('Path'):
for file in files:
if file.endswith('.c'):
with open(os.path.join(root, file)) as f:
for line in f:
if 'word' in line:
print(line)

得到错误
UnicodeDecodeError:' cp932'编解码器不能解码位置6616中的字节0xfc:非法多字节序列
我认为文件需要改变jis编码。 我可以在开始时设置编码吗? 我试过设定 with open(os.path.join(root,file),' r',encoding =' cp932')为f: 但得到同样的错误
答案 0 :(得分:2)
您可以传递错误='忽略',但请务必检查文件的编码。
open(os.path.join(root, file),'r', encoding='cp932', errors='ignore')
答案 1 :(得分:1)
最后到这里是因为我遇到了同样的错误。
我只是在学习,但幸运的是我找到了解决方案。
如果它说:
UnicodeDecodeError:'cp932'编解码器无法解码
这意味着您使用的文件未编码为cp932,因此您实际上需要更改编码。
就我而言,我试图读取以 UTF-8 编码的文件,因此解决方案是在打开文件时包含该文件:
open("file.txt","r",encoding='utf-8')
我希望这可以帮助任何因为同样的错误来到这里的人。
答案 2 :(得分:0)
尝试使用io
库:
io.open(os.path.join(root, file), mode='r', encoding='cp932')
答案 3 :(得分:0)
您需要将阅读模式从 'r'
更改为 'rb'
。