Python读取文件行数失败,报UnicodeDecodeError错误求助
解决Python读取文件时的UnicodeDecodeError错误
问题原因
报错是因为Windows系统默认用cp1252编码打开文件,但programms.txt包含该编码无法识别的字符(位置299的0x9d字节),导致解码失败。
解决方案
1. 指定文件正确编码打开
先确认文件实际编码(通常为UTF-8),修改open()函数显式指定编码参数:
fhand = open('programms.txt', encoding='utf-8') count = 0 for line in fhand: count += 1 print('Line Count: ', count) fhand.close() # 建议手动关闭文件,避免资源泄漏
2. 使用with语句自动管理文件(推荐)
with语句会自动关闭文件,同时指定编码更安全:
count = 0 with open('programms.txt', encoding='utf-8') as fhand: for line in fhand: count += 1 print('Line Count: ', count)
3. 忽略无法解码的字符(临时应急)
若不确定文件编码且可接受丢失部分字符,可添加errors='ignore'参数:
with open('programms.txt', encoding='utf-8', errors='ignore') as fhand: count = sum(1 for line in fhand) # 生成器表达式统计行数更简洁高效 print('Line Count: ', count)
额外提示
- 可用VS Code等文本编辑器打开文件,查看右下角显示的编码,确认后填入
encoding参数。 - 统计行数用
sum(1 for line in fhand)比循环累加的写法更高效。
内容的提问来源于stack exchange,提问作者131 Mohammad Ubaida
相关产品推荐
相关产品推荐

