使用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中xrange与yield的用法实例分析
Dec 26 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
pandas读取csv文件,分隔符参数sep的实例
Dec 12 Python
python 3.3 下载固定链接文件并保存的方法
Dec 18 Python
linux下安装python3和对应的pip环境教程详解
Jul 01 Python
python使用pandas处理excel文件转为csv文件的方法示例
Jul 18 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
pygame实现打字游戏
Feb 19 Python
python基于plotly实现画饼状图代码实例
Dec 16 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
使用python实现飞机大战游戏
Mar 23 Python
python scrapy简单模拟登录的代码分析
Jul 21 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创建sprite
2014/02/11 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
<script defer> defer 是什么意思
2009/05/10 Javascript
Javascript 检测、添加、移除样式(className)函数代码
2009/09/08 Javascript
JsDom 编程小结
2011/08/09 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
vuex state及mapState的基础用法详解
2018/04/19 Javascript
Vue拖拽组件列表实现动态页面配置功能
2019/06/17 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python发送以整个文件夹的内容为附件的邮件的教程
2015/05/06 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python把对应格式的csv文件转换成字典类型存储脚本的方法
2019/02/12 Python
python处理excel绘制雷达图
2019/10/18 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
Pycharm Plugins加载失败问题解决方案
2020/11/28 Python
为中国消费者甄选天下优品:网易严选
2016/08/11 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
2014两会学习心得:榜样精神伴我行
2014/03/17 职场文书
员工合理化建议书
2014/05/19 职场文书
十佳党员事迹材料
2014/08/28 职场文书
2014年基建工作总结
2014/12/12 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书
javaScript Array api梳理
2021/03/31 Javascript
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
JavaScript实现登录窗体
2021/06/22 Javascript
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技