使用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实现2014火车票查询代码分享
Jan 10 Python
Python中使用语句导入模块或包的机制研究
Mar 30 Python
详解Python编程中time模块的使用
Nov 20 Python
Python引用模块和查找模块路径
Mar 17 Python
python的Crypto模块实现AES加密实例代码
Jan 22 Python
Python实现屏幕截图的两种方式
Feb 05 Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
Django--权限Permissions的例子
Aug 28 Python
Python利用全连接神经网络求解MNIST问题详解
Jan 14 Python
基于Numba提高python运行效率过程解析
Mar 02 Python
Python logging日志库空间不足问题解决
Sep 14 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
二次元帅气男生排行榜,只想悄悄收藏系列
2020/03/04 日漫
PHP判断JSON对象是否存在的方法(推荐)
2016/07/06 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
jQuery .tmpl(), .template()学习资料小结
2011/07/18 Javascript
javascript学习笔记(五) Array 数组类型介绍
2012/06/19 Javascript
javascript 日期时间 转换的方法
2013/02/21 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
在vue-cli3中使用axios获取本地json操作
2020/07/30 Javascript
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
森林病虫害防治方案
2014/06/02 职场文书
小学运动会口号
2014/06/07 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
答辩状格式范本
2015/05/22 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
子女赡养老人协议书
2016/03/23 职场文书
MySQL注入基础练习
2021/05/30 MySQL
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技