zoukankan      html  css  js  c++  java
  • 一个批量转换文件编码的python脚本

    需要将工作目录下的文件进行转码,开始的编码是GBK的,需要将其转换为utf-8的。文件较多,手动转换肯定不行,用Python写个脚本来实现。找到一段代码参考:
    1. import os,sys  
    2.   
    3. def convert( filename, in_enc = "GBK", out_enc="UTF8" ):  
    4.     try:  
    5.         print "convert " + filename,  
    6.         content = open(filename).read()  
    7.         new_content = content.decode(in_enc).encode(out_enc)  
    8.         open(filename, 'w').write(new_content)  
    9.         print " done"  
    10.     except:  
    11.         print " error"  
    12.   
    13. def explore(dir):  
    14.     for root, dirs, files in os.walk(dir):  
    15.         for file in files:  
    16.             path = os.path.join(root, file)  
    17.             convert(path)  
    18.   
    19. def main():  
    20.     for path in sys.argv[1:]:  
    21.         if os.path.isfile(path):  
    22.             convert(path)  
    23.         elif os.path.isdir(path):  
    24.             explore(path)  
    25.   
    26. if __name__ == "__main__":  
    27.     main() 

    使用了string模块里的encode方法和decode方法,我用的是python 3.1版本,发现者两个方法已经不支持了。如果你是旧版本的Python可以直接使用,2.6是可以的。

    查阅了下3.1的文档,发现codecs能很好处理文件编码问题,使用它来正确的读出文件,然后将文件编码改为utf-8,写回去就好:
    代码实现如下:

    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()       
  • 相关阅读:
    在luogu上嫖到了一张感觉很NB的图
    luoguP6028算术 题解(推柿子+整除分块+调和级数)
    notebook
    不氵的 0xd
    点分治&&DSU on tree学习笔记
    洛谷10月月赛2T1题解
    概率与期望题库题目整理
    TiDB-TiUP工具使用
    TiDB-单机学习环境部署(4.X版本)
    DB-异构数据库迁移工具
  • 原文地址:https://www.cnblogs.com/macula7/p/1960395.html
Copyright © 2011-2022 走看看