使用python的chardet库获得文件编码并修改编码


Posted in Python onJanuary 22, 2014

首先需要安装chardet库,有很多方式,我才用的是比较笨的方式:sudo pip install chardet

#!/usr/bin/env python
# coding: UTF-8
import sys
import os
import chardet 
def print_usage():

print '''usage:

change_charset [file|directory] [charset] [output file]\n

for example:

  change 1.txt utf-8 n1.txt

  change 1.txt utf-8

  change . utf-8

  change 1.txt
'''
def get_charset(s):

return chardet.detect(s)['encoding']
 
def remove(file_name):

os.remove(file_name)
 
def change_file_charset(file_name, output_file_name, charset):

f = open(file_name)

s = f.read()

f.close()

if file_name == output_file_name or output_file_name == "":


remove(file_name)

old_charset = get_charset(s)

u = s.decode(old_charset)

if output_file_name == "":


output_file_name = file_name

f = open(output_file_name, 'w')

s = u.encode(charset)

f.write(s)

f.close()
 
def do(file_name, output_file_name, charset):

if os.path.isdir(file_name):


for item in os.listdir(file_name):



try:




if os.path.isdir(file_name+"/"+item):





do(file_name+"/"+item, "", charset)




else:





change_file_charset(file_name+"/"+item, "", charset)



except OSError, e:




print e

else:


change_file_charset(file_name, output_file_name, charset)
 
if __name__ == '__main__':

length = len(sys.argv)

if length == 1:


print_usage()

elif length == 2:


do(sys.argv[1], "", "utf-8")

elif length == 3:


do(sys.argv[1], "", sys.argv[2])

elif length == 4:


do(sys.argv[1], sys.argv[3], sys.argv[2])

else:


print_usage()
Python 相关文章推荐
Python实现注册登录系统
Aug 08 Python
简单了解Django模板的使用
Dec 20 Python
在cmd命令行里进入和退出Python程序的方法
May 12 Python
详解Python3的TFTP文件传输
Jun 26 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
python学习开发mock接口
Apr 28 Python
Python中bisect的使用方法
Dec 31 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
如何提高python 中for循环的效率
Apr 15 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
Python自动创建Excel并获取内容
Sep 16 Python
python数字图像处理之图像的批量处理
Jun 28 Python
使用go和python递归删除.ds store文件的方法
Jan 22 #Python
python学习手册中的python多态示例代码
Jan 21 #Python
python pdb调试方法分享
Jan 21 #Python
python发送邮件接收邮件示例分享
Jan 21 #Python
python逐行读取文件内容的三种方法
Jan 20 #Python
c++生成dll使用python调用dll的方法
Jan 20 #Python
python中getattr函数使用方法 getattr实现工厂模式
Jan 20 #Python
You might like
php 获取SWF动画截图示例代码
2014/02/10 PHP
php生出随机字符串
2017/07/06 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
Javascript JSQL,SQL无处不在,
2010/05/05 Javascript
js删除所有的cookie的代码
2010/11/25 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
输入自动提示搜索提示功能的使用说明:sugggestion.txt
2013/09/02 Javascript
js中call与apply的用法小结
2013/12/28 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
9款2014最热门jQuery实用特效推荐
2014/12/07 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
详解vue.js之props传递参数
2017/12/12 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
vue+vant实现购物车全选和反选功能
2020/11/17 Vue.js
Python标准库内置函数complex介绍
2014/11/25 Python
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
SQL Server笔试题
2012/01/10 面试题
优秀共产党员先进事迹材料
2014/05/06 职场文书
欢迎领导检查标语
2014/06/27 职场文书
教师岗位职责
2015/02/03 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android