Python批量转换文件编码格式
更新时间:2015年05月17日 15:16:29 投稿:hebedich
需要将工作目录下的文件进行转码,开始的编码是GBK的,需要将其转换为utf-8的。文件较多,手动转换肯定不行,用Python写个脚本来实现。
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud)
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
自己写的方法,适用于linux,
#!/usr/bin/python #coding=utf-8 import sys import os, os.path import dircache import commands def add(x,y): return x*y def trans(dirname): lis = dircache.opendir(dirname) for a in lis: af=dirname+os.sep+a ## print af if os.path.isdir(af): ## print af trans(af) else: ## print af+"encoding="+fi.name ft = commands.getoutput('file -i '+af) ## print ft if a.find('.htm')==-1 and a.find('.xml')==-1 and ft.find('text/')!=-1 and ft.find('iso-8859')!=-1: print 'gbk'+ft+">"+af commands.getoutput('iconv -ficonv -f gbk -t utf-8 -c -o'+""+af+""+af) trans(os.getcwd())
py2.6以下版本可用代码
import os,sys def convert( filename, in_enc = "GBK", out_enc="UTF8" ): try: print "convert " + filename, content = open(filename).read() new_content = content.decode(in_enc).encode(out_enc) open(filename, 'w').write(new_content) print " done" 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()
支持py3.1的版本
import os import sys import codecs #该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8 def convert(file,in_enc="GBK",out_enc="UTF-8"): try: print ("convert " +file) f=codecs.open(file,'r',in_enc) new_content=f.read() codecs.open(file,'w',out_enc).write(new_content) #print (f.read()) except IOError as err: print ("I/O error: {0}".format(err)) 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中的break、continue、exit()、pass全面解析
下面小编就为大家带来一篇python中的break、continue、exit()、pass全面解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-08-08
最新评论