pythonプログラムはファイルを符号化して変換します

3063 ワード

# -*- 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)
gb 2312からutf-8に変換される.
ソース:ここをクリックして添付ファイルをダウンロード(gbtoutf 8) from:http://www.iteedu.com/myarticle/plang/python/gb-to-utf8.php