Python实现批量转换文件编码的方法
admin
2023-07-31 02:25:13
0

本文实例讲述了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程序设计有所帮助。

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...