通过python实现对文件转码,其实处理很简单:

1.打开读取文件内容到一个字符串变量中,把gbk编码文件,对字符串进行decode转换成unicode

2.然后使用encode转换成utf-8格式。
3.最后把字符串重新写入到文件中即可。
 
在对文件进行转码之前,需要先对文件的编码格式进行校验,如果已经是utf-8格式的文件,不做decode转码处理,否则会报错。
因此这里使用chardet包进行返回文件的编码格式。
使用 pip install chardet 安装即可引入使用。
 
脚本如下:
convergbk2utf.py
# -*- coding:utf-8 -*-
__author__ = 'tsbc' import os,sys
import chardet def convert( filename, in_enc = "GBK", out_enc="UTF8" ):
try:
print "convert " + filename,
content = open(filename).read()
result = chardet.detect(content)#通过chardet.detect获取当前文件的编码格式串,返回类型为字典类型
coding = result.get('encoding')#获取encoding的值[编码格式]
if coding != 'utf-8':#文件格式如果不是utf-8的时候,才进行转码
print coding + "to utf-8!",
new_content = content.decode(in_enc).encode(out_enc)
open(filename, 'w').write(new_content)
print " done"
else:
print coding
except IOError,e:
# except:
print " error" def explore(dir):
for root, dirs, files in os.walk(dir):
for file in files:
path = os.path.join(root, file)
convert(path) def main():
for path in sys.argv[1:]:
if os.path.isfile(path):
convert(path)
elif os.path.isdir(path):
explore(path) if __name__ == "__main__":
main()

  

执行
python convergbk2utf.py d:\test
可以讲d:\test目录中的所有文件,转码成utf8.
 
PS:想要做的容错性更高一下的话,可以对要转码的文件类型再加个判断进行过滤,对filename通过分析,只转换你想要转换的文件类型即可。

Python 对目录中的文件进行批量转码(GBK>UTF8)的更多相关文章

  1. python glob 用通配符查找指定目录中的文件 - 开源中国社区

    python glob 用通配符查找指定目录中的文件 - 开源中国社区 python glob 用通配符查找指定目录中的文件

  2. Linux查看目录中的文件

    Linux查看目录中的文件 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ ls examples.desktop jdk 公共的 视频 文档 音乐 java ...

  3. File类之在指定目录中查找文件

    package IoDemo; import java.io.File; /** * @Title:FileDemo2 * @Description:在指定的目录中查找文件 * @author Cra ...

  4. find - 递归地在层次目录中处理文件

    总览 SYNOPSIS find [path...] [expression] 描述 DESCRIPTION 这个文档是GNU版本 find 命令的使用手册. find 搜索目录树上的每一个文件名,它 ...

  5. 使用Parallel计算目录中的文件字节长度

    /// <summary> /// 根据通配符和搜索条件计算给定目录中的文件字节长度 /// </summary> /// <param name="path& ...

  6. Linux find命令:在目录中查找文件(超详解)

    find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限.大小.时间.inode 号等来搜索文件.但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,f ...

  7. python 提取目录中特定类型的文件

    python使用‘os’和‘re’模块提取目录中特定类型的文件,这两个模都是安装python自带的,所以不需要安装. 思路: 使用os库lilstdir获取文件夹中的所有文件名,然后带上文件夹路径组合 ...

  8. Python 打开目录与指定文件

    Python打开外部文件有很多方法, os.popen打开外部程序,但发现只能打开文件所在目录的文件 os.system可打开外部文件os.system(command) command 要执行的命令 ...

  9. Python遍历目录下xlsx文件

    对指定目录下的指定类型文件进行遍历,可对文件名关键字进行条件筛选 返回值为文件地址的列表 import os # 定义一个函数,函数名字为get_all_excel,需要传入一个目录 def get_ ...

随机推荐

  1. 配置Tomcat web保存文件到项目路径之外

    <Host name="localhost"  appBase="webapps"            unpackWARs="true&qu ...

  2. SQL声明变量并赋值

    declare @studentid int //声明一个int型变量 );//设置变量值,tclass 为任意表,classid 为表中任一字段 if(@studentid is not null) ...

  3. Husky or C++ API - HDFS Short-Circuit Local Reads

    hdfs-site.xml added: <property> <name>dfs.client.read.shortcircuit</name> <valu ...

  4. 利用vmware 搭建分布式集群

    前言:      我们需要至少3台服务器来实现分布式,鉴于没那么多钱买真机器,从学习和开发的角度看,只有虚拟机一条路了. 软件选择:     虚拟机使用VMware软件,因为主流而且资料比较多,学习成 ...

  5. WCF Security(转载)

    WCF Security 主要包括 "Transfer Security"."Access Control"."Auditing" 几个部分 ...

  6. sed 技巧

    八.流编辑器sed sed ':a;N;$!ba;s/0.01/0.0001/g' file:a 创建一个labelaN 将下一行读入到模式空间$! 如果不是最后一行,ba跳转到label a处s/0 ...

  7. kafka集群搭建和使用Java写kafka生产者消费者

    1 kafka集群搭建 1.zookeeper集群  搭建在110, 111,112 2.kafka使用3个节点110, 111,112 修改配置文件config/server.properties ...

  8. 使用T4模板生成代码的学习

    之前做项目使用的都是Db First,直接在项目中添加Entity Framework,使用T4模板(T4模板引擎之基础入门)生成DAL BLL层等(T4模板是一个同事给的,也没有仔细研究,代码如下: ...

  9. c++防止客户端多开巧妙代码

    在读OBS源码时看到一个比较有意思的关于防止用户多开程序的写法,简单有效,记录下 //make sure only one instance of the application can be ope ...

  10. NOI 09:奇数求和

    描述 计算非负整数 m 到 n(包括m 和 n )之间的所有奇数的和,其中,m 不大于 n,且n 不大于300.例如 m=3, n=12, 其和则为:3+5+7+9+11=35. 输入 两个数 m 和 ...