使用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迭代和迭代器
Mar 28 Python
Python 正则表达式的高级用法
Dec 04 Python
python入门教程之识别验证码
Mar 04 Python
python简单实现操作Mysql数据库
Jan 29 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
python实现飞行棋游戏
Feb 05 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
python 读取yaml文件的两种方法(在unittest中使用)
Dec 01 Python
python selenium 获取接口数据的实现
Dec 07 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
python字典进行运算原理及实例分享
Aug 02 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实现的英文名字全拼随机排号脚本
2014/07/04 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
解决js正则匹配换行问题实现代码
2012/12/10 Javascript
javascript 回到顶部效果的实现代码
2014/02/17 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
js 加密压缩出现bug解决方案
2014/11/25 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
微信小程序引用iconfont图标的方法
2018/10/22 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
python 通过 socket 发送文件的实例代码
2018/08/14 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
在pycharm 中添加运行参数的操作方法
2019/01/19 Python
FFT快速傅里叶变换的python实现过程解析
2019/10/21 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python里glob模块知识点总结
2021/01/05 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
美国尼曼百货官网:Neiman Marcus
2019/09/05 全球购物
优秀团员个人事迹材料
2014/01/29 职场文书
公司接待方案
2014/03/08 职场文书
幼儿园安全责任书
2014/04/14 职场文书
初中优秀学生评语
2014/12/29 职场文书
学年个人总结范文
2015/03/05 职场文书
2016七夕情人节广告语
2016/01/28 职场文书
python实现图片批量压缩
2021/04/24 Python
linux中nohup和后台运行进程查看及终止
2021/06/24 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
Go归并排序算法的实现方法
2022/04/06 Golang