怎么使用python批量修改文本文件编码格式

其他教程   发布日期:2023年11月11日   浏览次数:529

今天小编给大家分享一下怎么使用python批量修改文本文件编码格式的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

使用python批量修改文本文件编码格式

把文本文件的编码格式进行批量幻化,比如ascii, gb2312, utf8等,相互转化,字符集的大小来看,utf8>gb2312>ascii,因此最好把gb2312转为utf8,否则容易出现乱码。

gb2312和utf-8的主要区别:

关于字库规模: UTF-8 > gb2312(utf8字全而gb2312只有汉字)

关于保存大小: UTF-8> gb2312 (utf8更臃肿、加载更慢,gb2312更小巧,加载更快)

关于适用范围:gb2312主要在中国大陆地区使用,是一个本地化的字符集,UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。

  1. import sys
  2. import chardet
  3. import codecs
  4. def get_encoding_type(fileName):
  5. '''print the encoding format of a txt file '''
  6. with open(fileName, 'rb') as f:
  7. data = f.read()
  8. encoding_type = chardet.detect(data)
  9. #print(encoding_type)
  10. return encoding_type
  11. # such as {'encoding': 'GB2312', 'confidence': 0.99, 'language': 'Chinese'}
  12. def convert_encoding_type(filename_in, filename_out, encode_in="gb2312", encode_out="utf-8"):
  13. '''convert encoding format of txt file '''
  14. #filename_in = 'flash.c'
  15. #filename_out = 'flash_gb2312.c'
  16. #encode_in = 'utf-8' # 输入文件的编码类型
  17. #encode_out = 'gb2312'# 输出文件的编码类型
  18. with codecs.open(filename=filename_in, mode='r', encoding=encode_in) as fi:
  19. data = fi.read()
  20. with open(filename_out, mode='w', encoding=encode_out) as fo:
  21. fo.write(data)
  22. fo.close()
  23. # with open(filename_out, 'rb') as f:
  24. # data = f.read()
  25. # print(chardet.detect(data))
  26. if __name__=="__main__":
  27. # fileName = argv[1]
  28. # get_encoding_type(fileName)
  29. # convert_encoding_type(fileName, fileName)
  30. filename_of_files = sys.argv[1] #the file contain full file path at each line
  31. with open(filename_of_files, 'rb') as f:
  32. lines = f.readlines()
  33. for line in lines:
  34. fileName = line[:-1]
  35. encoding_type = get_encoding_type(fileName)
  36. if encoding_type['encoding']=='GB2312':
  37. print(encoding_type)
  38. convert_encoding_type(fileName, fileName)
  39. print(fileName)

补充:python实现文件批量转为utf-8格式

python实现文件批量转为utf-8格式

  1. xml_path = './'
  2. with open(xml_path , 'rb+') as f:
  3. content = f.read()
  4. codeType = detect(content)['encoding']
  5. content = content.decode(codeType, "ignore").encode("utf8")
  6. fp.seek(0)
  7. fp.write(content)

以上就是怎么使用python批量修改文本文件编码格式的详细内容,更多关于怎么使用python批量修改文本文件编码格式的资料请关注九品源码其它相关文章!