使用python的chardet库获得文件编码并修改编码

一天,当你走过蔓草荒烟,我便在那里向你轻声呼喊,以风声,以水响。斩断自己的退路,才能更好地赢得出路。

首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet


#!/usr/bin/env python
# coding: UTF-8
import sys
import os
import chardet
def print_usage():
  print '''usage:
  change_charset [file|directory] [charset] [output file]\n
  for example:
   change 1.txt utf-8 n1.txt
   change 1.txt utf-8
   change . utf-8
   change 1.txt
'''
def get_charset(s):
  return chardet.detect(s)['encoding']
def remove(file_name):
  os.remove(file_name)
def change_file_charset(file_name, output_file_name, charset):
  f = open(file_name)
  s = f.read()
  f.close()  if file_name == output_file_name or output_file_name == "":
    remove(file_name)  old_charset = get_charset(s)
  u = s.decode(old_charset)  if output_file_name == "":
    output_file_name = file_name
  f = open(output_file_name, 'w')
  s = u.encode(charset)
  f.write(s)
  f.close()
def do(file_name, output_file_name, charset):
  if os.path.isdir(file_name):
    for item in os.listdir(file_name):
      try:
        if os.path.isdir(file_name+"/"+item):
          do(file_name+"/"+item, "", charset)
        else:
          change_file_charset(file_name+"/"+item, "", charset)
      except OSError, e:
        print e
  else:
    change_file_charset(file_name, output_file_name, charset)
if __name__ == '__main__':
  length = len(sys.argv)  if length == 1:
    print_usage()
  elif length == 2:
    do(sys.argv[1], "", "utf-8")
  elif length == 3:
    do(sys.argv[1], "", sys.argv[2])
  elif length == 4:
    do(sys.argv[1], sys.argv[3], sys.argv[2])
  else:
    print_usage()

到此这篇关于使用python的chardet库获得文件编码并修改编码就介绍到这了。青春啊,永远是美好的,可是真正的青春,只属于这些永远力争上游的人,永远忘我劳动的人,永远谦虚的人。更多相关使用python的chardet库获得文件编码并修改编码内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

标签: python chardet