python读写文件夹中编码方式各异的文件

zaihuilvcha
  • 65

现有需求如下:
遍历一个文件夹中的所有文件,读取文件内容,对文件内容进行处理后,重新写入文件中。
该文件夹下的文件编码方式不统一,例如下图所示:

clipboard.png

图中,两个文件的编码,一个是ASCII,另一个是ISO-8859,且换行符还是CRLF风格的(该文件中包含了中文注释)

我尝试直接用utf-8编码方式读取文件:with open(file, encoding='utf-8') as f,当读到那个272的file时,会报错:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbc in position 0: invalid start byte

也试过这样:with codecs.open(file, encoding='utf-8') as f,但是仍然会报错。

请问有何好的处理办法?

回复
阅读 4.5k
2 个回答
慕辰先生
  • 1.8k

二进制读取字节,然后根据不同的编码再处理

import codecs
with codecs.open('Client.java','rb') as f:
    print f.read().decode('utf8')
    # print f.read().decode('gbk')
    # print f.read().decode('ASCII')

全部不加编码地读进来,然后判断编码,并转成 utf-8

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏