批量转换文件编码,批量转换编码,import osimp


import osimport shutildef match(config,fullpath,type):    flag=False    if type == 'exclude':        for item in config['src']['exclude']:            if fullpath.startswith(config['src']['path']+os.path.sep+item):                flag=True                break    if type=='filter':        for item in config['src']['filter']:            if fullpath.endswith(item):                flag=True                break    return flagdef conver_file(param):    for root, dirs, files in os.walk(param['src']['path']):        for filename in files:            readfile=root+os.path.sep+"%s" %filename            print(readfile)            if 'filter' in param['src']:                if not (match(param,readfile,'filter')):                    continue            s=''            outfile=readfile.replace(param['src']['path'],param['dest']['path'])            try :                s=open(readfile,encoding=param['src']['encoding']).read()            except:                print("file %s  read erro" % readfile)                shutil.copy(readfile,outfile)            if  s: #False and                print("save")                with open(outfile, mode='w', encoding=param['dest']['encoding']) as a_file:                    a_file.write(s)        for dirname in dirs:            file=root+os.path.sep+"%s" %dirname            if 'exclude' in param['src']:                if(match(param,file,'exclude')):                    continue            outdir=file.replace(param['src']['path'],param['dest']['path'])            #print(outdir)            if not os.path.isdir(outdir):                os.mkdir(outdir)if __name__ == "__main__":    param={'src':{'path':r'D:\work\test\trunk','encoding':'gbk','exclude':['dataa'],'filter':['.php','.html','.htm']},        'dest':{'path':"f:\\test\\new",'encoding':'utf-8'}}    conver_file(param)

评论关闭