python程序把文件编码转换

# -*- coding: utf-8 -*-
import os
import shutil
import re
import sys
'''
功能:将一个文件夹中的指定类型的文件从gb2312或gbk转换成utf-8类型。
遍历一个文件夹下所有文件,从src中取出处理后放入ddn中,src中的不变。
指定src和ddn就可以了,还可以改文件处理部分完成别的功能 ''' src=os.getcwd()+'\\'+'!wwwroot' ddn=os.getcwd()+'\\'+'www' ##################################### def search(root,handler): global ddn list=os.listdir(root) for f in list: cf=root+'\\'+f if os.path.isdir(cf): search(cf,handler) else: handler(cf,ddn)#the function dealing with file ########################################################## def copy(sfn,ddn): global src ddn=ddn+os.path.dirname(sfn).replace(src,'') def copymain():#main code of copy function fn=os.path.basename (sfn) if re.search ('php',fn,re.I):#转换php后缀的文件,不严格检查 sf=open(sfn,'r') s=sf.read() try:#针对网页类型的文件的处理部分 if re.search(r'charset=gb2312',s,re.I):#gb2312类型的进行转换 print 'gb2312: ',sfn s=re.sub('charset=gb2312','charset=utf-8',s) s=s.decode('gbk') df=open(ddn+'\\'+os.path.basename(sfn),'w') df.write(s.encode('utf-8')) df.flush() sf.close() df.close() elif re.search(r'charset=utf-8',s,re.I):#utf-8类型直接复制 print 'utf-8: ',sfn sf.close() shutil.copy2(sfn,ddn) else:#不知道类型的按gb2312转换成utf-8类型 s=s.decode('gbk') df=open(ddn+'\\'+os.path.basename(sfn),'w') df.write(s.encode('utf-8')) df.flush() sf.close() df.close() print '*** ',sfn except: sf.close print sfn sys.exit() else:#非指定类型文件,直接复制 shutil.copy2(sfn,ddn) if os.path.exists (ddn): copymain() #''' else:#directory not exist,create it os.makedirs (ddn) copymain() #''' search(src,copy)


从gb2312转换到utf-8。


源代码:点这里下载附件(gbtoutf8)

from:http://www.iteedu.com/myarticle/plang/python/gb-to-utf8.php

posted @ 2011-03-03 00:42  dkcndk  阅读(6569)  评论(0编辑  收藏  举报