|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 txxcat 于 2020-4-22 18:54 编辑
Windows7之前的文本文件默认格式是GBK,Windows10的默认格式是utf-8,而Python打开文件默认是GBK,碰到utf-8的文件在读取时候就会报错,反过来,指定utf-8打开碰到GBK的时候又会报错。其实用一下try-except就可以很方便的避开这个错误了,因为当前碰到的编码问题大部分只涉及到这两种,所以下面代码可以应对99%的状况:
- def copen(filename):
- try:
- f = open(filename,encoding='GBK') #用GBK码打开文件
- try:
- f.read() #尝试读取,如果报错,执行except后的语句
- f.seek(0) #如果读取正常,把指针复位
- except UnicodeDecodeError:
- f = open(filename,encoding='utf-8',errors='ignore') #用utf-8码打开文件,errors='ignore':如果再有错就忽略,估计99.9%的文本文件不是GBK就是UTF-8,但还是要防止剩下的那么一点点可能
- except (OSError,AttributeError) as reason: #碰到其他错误报个错
- print(str(reason))
- return None
- return f
- f=copen(r'd:\test\test.txt')
- if f:
- print(f.read())
复制代码 |
|