Python批量转换文件编码格式

1147次阅读  |  发布于5年以前

自己写的方法,适用于linux,


    #!/usr/bin/python
    #coding=utf-8
    import sys
    import os, os.path
    import dircache
    import commands
    def add(x,y):
     return x*y

    def trans(dirname):
     lis = dircache.opendir(dirname)
     for a in lis:
    af=dirname+os.sep+a
    ## print af
     if os.path.isdir(af):
    ## print af
    trans(af)
    else:
     ## print af+"encoding="+fi.name
     ft = commands.getoutput('file -i '+af)
    ## print ft
     if a.find('.htm')==-1 and a.find('.xml')==-1 and ft.find('text/')!=-1 and ft.find('iso-8859')!=-1:
     print 'gbk'+ft+">"+af
     commands.getoutput('iconv -ficonv -f gbk -t utf-8 -c -o'+""+af+""+af)

    trans(os.getcwd())

py2.6以下版本可用代码


    import os,sys 

    def convert( filename, in_enc = "GBK", out_enc="UTF8" ): 
      try: 
        print "convert " + filename, 
        content = open(filename).read() 
        new_content = content.decode(in_enc).encode(out_enc) 
        open(filename, 'w').write(new_content) 
        print " done" 
      except: 
        print " error" 

    def explore(dir): 
      for root, dirs, files in os.walk(dir): 
        for file in files: 
          path = os.path.join(root, file) 
          convert(path) 

    def main(): 
      for path in sys.argv[1:]: 
        if os.path.isfile(path): 
          convert(path) 
        elif os.path.isdir(path): 
          explore(path) 

    if __name__ == "__main__": 
      main() 

支持py3.1的版本


    import os
    import sys
    import codecs
    #该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8 
    def convert(file,in_enc="GBK",out_enc="UTF-8"):
    try:
    print ("convert " +file)
    f=codecs.open(file,'r',in_enc)
    new_content=f.read()
    codecs.open(file,'w',out_enc).write(new_content)
    #print (f.read())
    except IOError as err:
    print ("I/O error: {0}".format(err))


    def explore(dir):
    for root,dirs,files in os.walk(dir):
    for file in files:
    path=os.path.join(root,file)
    convert(path)

    def main():
    for path in sys.argv[1:]:
    if(os.path.isfile(path)):
    convert(path)
    elif os.path.isdir(path):
    explore(path)

    if __name__=="__main__":
    main()

以上所述就是本文 的全部内容了,希望大家能够喜欢。

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8