zoukankan      html  css  js  c++  java
  • 采用python获得并修改文件编码(原创)

    windows和linux采用了不同的编码,这让很多人伤透了脑经,这里我采用了Python的chardet库获得代码的编码,然后修改编码。

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

    2、废话不多说,直接上代码,同样废话一句,小弟是初手,仅供参考,请大家多多指教。

    python版本:

    #!/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]
      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()
  • 相关阅读:
    一:Storm集群环境搭建
    八:Zookeeper开源客户端Curator的api测试
    七:zooKeeper开源客户端ZkClient的api测试
    六:ZooKeeper的java客户端api的使用
    Redis(四):常用数据类型和命令
    Spring Cloud分布式微服务系统中利用redssion实现分布式锁
    @Controller和@RestController的区别?
    可伸缩系统架构探讨
    可扩展架构系统的探讨
    @ExceptionHandler异常统一处理
  • 原文地址:https://www.cnblogs.com/dyf6372/p/3527292.html
Copyright © 2011-2022 走看看