zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python实现批量转换文件编码(批转换编码示例)

2023-06-13 09:15:16 时间

复制代码代码如下:


#-*-coding:utf-8-*-
__author__="walkskyer"

importos
importglob

classEncoding:
   def__init__(self):
       #文件扩展名
       self.ext=".*"
       #编码
       self.srcEncoding=None
       self.dstEncoding=None

   defconvertEncoding(self,content,srcEncoding=None,dstEncoding=None):
       returncontent.decode(self.srcEncoding).encode(self.dstEncoding)

   defprocessDirectory(self,args,dirname,filenames):
       print"Directory",dirname
       forfilenameinfilenames:
           ifnotos.path.isdir(dirname+"/"+filename):
               iffilename.endswith(self.ext)orself.ext==".*":
                   print"File",filename
                   self.f2f(dirname+"/"+filename)

   deff2f(self,filepath,srcEncoding=None,dstEncoding=None):
       try:
           f1=open(filepath,"rb")
           temp=f1.read()
           f1.close()
           f2=open(filepath,"wb")
           f2.write(temp.decode(self.srcEncoding).encode(self.dstEncoding))
           f2.close()
           print"转码成功"
       exceptException,e:
           printe


   defcolectFileType(self,dirname,fileType):
       forfilenameinglob.glob(r"*."+fileType):
           printfilename

   defsetExt(self,ext):
       ifnotext.startswith("."):
           ext="."+ext
       self.ext=ext

   defsetSRC(self,encoding):
       self.srcEncoding=encoding

   defsetDST(self,encoding):
       self.dstEncoding=encoding

if__name__=="__main__":
   obj=Encoding()
   printu"请输入文件类型:"
   obj.setExt(raw_input())
   printu"请输入文件原始编码:"
   obj.setSRC(raw_input())
   printu"请输入文件目标类型:"
   obj.setDST(raw_input())
   """obj.setExt("html")
   obj.setSRC("gbk")
   obj.setDST("utf-8")"""
   printu"请输入文件所在目录:"
   path=raw_input()
   os.path.walk(path,obj.processDirectory,None)