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


Posted in Python onJanuary 23, 2014
# -*- coding:utf-8 -*-
__author__ = 'walkskyer'
import os
import glob
class Encoding:
    def __init__(self):
        #文件扩展名
        self.ext = ".*"
        #编码
        self.srcEncoding=None
        self.dstEncoding=None
    def convertEncoding(self, content, srcEncoding=None, dstEncoding=None):
        return content.decode(self.srcEncoding).encode(self.dstEncoding)
    def processDirectory(self, args, dirname, filenames):
        print 'Directory', dirname
        for filename in filenames:
            if not os.path.isdir(dirname+'/'+filename):
                if filename.endswith(self.ext) or self.ext == ".*":
                    print ' File', filename
                    self.f2f(dirname+'/'+filename)
    def f2f(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 '转码成功'
        except Exception, e:
            print e

    def colectFileType(self, dirname, fileType):
        for filename in glob.glob(r'*.'+fileType):
            print filename
    def setExt(self, ext):
        if not ext.startswith('.'):
            ext = "." + ext
        self.ext = ext
    def setSRC(self, encoding):
        self.srcEncoding=encoding
    def setDST(self, encoding):
        self.dstEncoding=encoding
if __name__ == '__main__':
    obj = Encoding()
    print u'请输入文件类型:'
    obj.setExt(raw_input())
    print u'请输入文件原始编码:'
    obj.setSRC(raw_input())
    print u'请输入文件目标类型:'
    obj.setDST(raw_input())
    """obj.setExt('html')
    obj.setSRC('gbk')
    obj.setDST('utf-8')"""
    print u'请输入文件所在目录:'
    path = raw_input()
    os.path.walk(path, obj.processDirectory, None)
Python 相关文章推荐
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
Python编程之string相关操作实例详解
Jul 22 Python
Django自定义用户认证示例详解
Mar 14 Python
python2 中 unicode 和 str 之间的转换及与python3 str 的区别
Jul 25 Python
python 实现提取log文件中的关键句子,并进行统计分析
Dec 24 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
PyTorch中的Variable变量详解
Jan 07 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
Python celery原理及运行流程解析
Jun 13 Python
jupyter notebook更换皮肤主题的实现
Jan 07 Python
Python第三方库安装缓慢的解决方法
Feb 06 Python
使用Django框架创建项目
Jun 10 Python
python写的一个文本编辑器
Jan 23 #Python
python生成指定长度的随机数密码
Jan 23 #Python
python使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 #Python
python3使用urllib示例取googletranslate(谷歌翻译)
Jan 23 #Python
pyside写ui界面入门示例
Jan 22 #Python
pyqt和pyside开发图形化界面
Jan 22 #Python
python检测lvs real server状态
Jan 22 #Python
You might like
PHP 实用代码收集
2010/01/22 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
通过javascript设置css属性的代码
2009/12/28 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JS hashMap实例详解
2016/05/26 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
AngularJS实现的生成随机数与猜数字大小功能示例
2017/12/25 Javascript
详解vscode中vue代码颜色插件
2018/10/11 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
Vue 实现从文件中获取文本信息的方法详解
2019/10/16 Javascript
vue 解决form表单提交但不跳转页面的问题
2019/10/30 Javascript
基于js判断浏览器是否支持webGL
2020/04/18 Javascript
jenkins自动构建发布vue项目的方法步骤
2021/01/04 Vue.js
python pandas生成时间列表
2019/06/29 Python
Python中断多重循环的思路总结
2019/10/04 Python
TENSORFLOW变量作用域(VARIABLE SCOPE)
2020/01/10 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
2020/11/27 Python
如何避免常见的6种HTML5错误用法
2017/11/06 HTML / CSS
料理师求职信
2014/01/30 职场文书
风险评估实施方案
2014/03/09 职场文书
住宅质量保证书
2014/04/29 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
应收账款管理制度
2015/08/06 职场文书
2016寒假假期总结
2015/10/10 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis