使用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的chardet库获得文件编码并修改编码
Jan 22 Python
Python过滤列表用法实例分析
Apr 29 Python
python 字典中取值的两种方法小结
Aug 02 Python
python实现n个数中选出m个数的方法
Nov 13 Python
Python中的heapq模块源码详析
Jan 08 Python
django创建简单的页面响应实例教程
Sep 06 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
Python调用.NET库的方法步骤
Dec 27 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
Feb 17 Python
Django全局启用登陆验证login_required的方法
Jun 02 Python
详解Pandas 处理缺失值指令大全
Jul 30 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
PHP n个不重复的随机数生成代码
2009/06/23 PHP
php与php MySQL 之间的关系
2009/07/17 PHP
深入file_get_contents与curl函数的详解
2013/06/25 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
Yii中CGridView关联表搜索排序方法实例详解
2014/12/03 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php去掉文件前几行的方法
2015/07/29 PHP
JavaScript 比较时间大小的代码
2010/04/24 Javascript
JS实现判断滚动条滚到页面底部并执行事件的方法
2014/12/18 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
javascript鼠标滑过显示二级菜单特效
2020/11/18 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
2016/09/17 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
JavaScript判断变量名是否存在数组中的实例
2017/12/28 Javascript
解决betterScroll在vue中存在图片时,出现拉不动的问题
2018/09/27 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
使用Python发送邮件附件以定时备份MySQL的教程
2015/04/25 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
django 解决manage.py migrate无效的问题
2018/05/27 Python
python类中super() 的使用解析
2019/12/19 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
一款基于css3和jquery实现的动画显示弹出层按钮教程
2015/01/04 HTML / CSS
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
学习雷锋寄语大全
2014/04/11 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
运动会口号大全
2014/06/07 职场文书
生物学专业求职信
2014/07/23 职场文书
单位未婚证明范本
2014/11/25 职场文书