|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 庞司令 于 2017-10-7 10:18 编辑
win 10
python 363
——————————————————————————————————————————————————————————————
程序代码如下:
f=open('D:\\下载\\橙红年代.txt','rt')
while True:
line=f.readline()
if len(line)!=0:
print(line,end='')
else:
break
f.close()
——————————————————————————————————————————————————————————————
错误代码如下:
Traceback (most recent call last):
File "E:\python363\书本程序\橙红年代阅读.py", line 3, in <module>
line=f.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 0: illegal multibyte sequence
打开的文件是以前读的一本小说,请问为什么会出错呢?在网上找,说是因为解码方式不对,然后也尝试了一些别的解码方式,但还是没办法实现我的功能,请问该如何修改呢?
文件编码问题,要么把你的txt文件另存为时选下编码。
要么参考如下
安装chardet
https://pypi.python.org/pypi/chardet
import chardet
#以rb读取文件返回文件的编码(用到了chardet类)
with open(file_name, 'rb') as f:
raw = f.read()
result = chardet.detect(raw)
encoding = result['encoding']
lines = 0
with open(file_name,encoding=encoding) as f:
print('正在分析文件:%s ...' % file_name)
try:
for each_line in f:
lines += 1
except Exception as reason:
print(str(reason)) # 读取出错显示错误信息......
print('%s -> %s' % (file_name,lines))
return lines
|
-
|