45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:Python如何实现批量转换文件编码?

Python如何实现批量转换文件编码?

2015-08-14 19:22:19 来源:www.45fan.com 【

Python如何实现批量转换文件编码?

本文实例讲述了Python实现批量转换文件编码的方法。分享给大家供大家参考。具体如下:

这里将某个目录下的所有文件从一种编码转换为另一种编码,然后保存

import os
import shutil
def 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 flag
def 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)

希望本文所述对大家的Python程序设计有所帮助。


本文地址:http://www.45fan.com/a/question/17798.html
Tags: 实现 python 批量
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部