# -*- coding: utf-8 -*-import osimport shutilimport reimport 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