文件编码格式一直是很多人特别头疼的一件事情,最近由于跨平台开发,经常出现编码格式的问题。所以关于编码格式转换采用python的方式记录下来以便后期需要。让我们一起走进python对编码格式的操作之路

编码格式介绍

ASCII码:使用单字节编码,所以范围基本只有英文字母、数字和一些特殊字符;只有256个字节。

Unicode:能够表示全世界的所有字符。

GBK:只用来编码汉字的,GBK全称《汉字编码扩展规范》双字节编码。

UTF-8:针对Unicode的可变字符编码,又称万能码。

三方库文件

chardet、codecs

库文件简介

在Python中,codecs模块提供了实现这些规则的方法,通过模块公开的方法我们能够方便地获取某种编码方式的Encoder和 Decoder工厂函数(Factory function),以及StreamReader、StreamWriter和StreamReaderWriter类。

在处理字符串时,常常会遇到不知道字符串是何种编码,如果不知道字符串的编码就不能将字符串转换成需要的编码。面对多种不同编码的输入方式,是否会有一种有效的编码方式?chardet是一个非常优秀的编码识别模块。

代码转换实例

Main函数

import os

import sys

import codecs

import chardet

#将路径下面的所有文件,从原来的格式变为UTF-8的格式

def Main():

path = '文件路径'

(floders, files) = list_folders_files(path)

for file in files:

file_name =os.path.join(floders,file)

with open(file_name, "rb") as f_in:

data = f.read()

code_type = chardet.detect(data)['encoding']

file_convert(file_name,file, code_type, 'UTF-8')

文件转换代码

def convert(file_name,file, in_code="GBK", out_code="UTF-8"):

"""

该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到UTF-8

:param file: 文件路径

:param in_code: 输入文件格式

:param out_code: 输出文件格式

:return:

"""

out_path='输出文件路径'

try:

with codecs.open(file_name, 'r', incode) as f_in:

new_content = f_in.read()

f_out = codecs.open(os.path.join(out_path,file), 'w', out_code)

f_out.write(new_content)

f_out.close

except IOError as err:

print("I/O error: {0}".format(err))

获取指定文件夹下文件

import os

def list_folders_files(path):

"""

返回 "文件夹" 和 "文件" 名字

:param path: "文件夹"和"文件"所在的路径

:return: (list_folders, list_files)

:list_folders: 文件夹

:list_files: 文件

"""

list_folders = []

list_files = []

for file in os.listdir(path):

file_path = os.path.join(path, file)

if os.path.isdir(file_path):

list_folders.append(file)

else:

list_files.append(file)

return (list_folders, list_files)

Linux 命令行转换

iconv命令用于文件编码的转换,

碰到gbk编码的文件,需要转换成utf8,直接使用该命令即可。

命令用法

iconv --list :列出iconv支持的编码列表

语法

iconv -f 原编码 -t 新编码 filename -o newfile

参数说明

参数

参数描述

-f

from 来源编码

-t

to 转换后新编码

-c

忽略无效字符

-s

--silent,忽略警告

-o file

可选,没有的话直接,

转换当前文件,使用-o 保留源文件

命令实例

查看文件

$ file test

test: UTF-8 Unicode text

转换

$ iconv -f utf8 -t gbk test -o test.gbk

效果

$ file test*

test: UTF-8 Unicode text

test.gbk: ISO-8859 text

python怎么转换文件格式_[python]转换文件编码格式相关推荐

  1. python中gettext文件格式_如何将gettext .mo文件转换为.po文件 - python

    Improve this question 当.po文件不再可用时,有什么方法可以将.mo文件转换为.po文件源?我需要编辑.mo文件的内容,但没有.po文件.可能吗? 参考方案 msgunfmt [ ...

  2. python希腊字母怎么生成_#python sympy怎样把狄克拉函数定义出来#

    Python sympy用integrate解定积分出来的结果不是计算完的结果 ## 数值积分 sympy下的integrate()函数是解析积分,当被积函数不存在原函数时则无法得到节分结果.所以建议 ...

  3. python shell如何打开_“python shell怎么打开“python shell启动教程

    python shell怎么打开 1.简介:如何在python中运行shell(bash命令) 2.工具/原料:python库:os.py 3.方法:import os command = 'date ...

  4. python输出文本居中_#python PIL ImageDraw text 文本居中#

    python pip pil有什么东西 你所问的问题实是属1.先参考[教程]Python中的内置的和方的模块搞懂PIL是属于第三方Python模块2.再参考:[待完善][总结]Python安装第三方的 ...

  5. python多进程编程实例_[python] Python多进程编程技术实例分析

    这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...

  6. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程

    用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...

  7. python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !

    没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...

  8. linux 文件格式latin1,Linux查看文件编码格式

    linux查看文件编码格式 1.file命令 首先查看file命令的help,file --help,里面有详情的参数说明. 使用file 命令查看文件的编码格式 [root@dep-184 /]# ...

  9. python数字转字符串_字符串转换与格式化

    字符串转换与格式化¶ 用于数字转换和格式化字符串输出的函数 int PyOS_snprintf(char*str, size_tsize, const char*format, ...)¶ 根据格式字 ...

  10. python怎么转换文件格式_python怎么转换数据类型

    在处理数据的时候,经常需要转换数据的格式,来方便数据遍历等操作.下面我们来看一下Python中的几种数据类型转换. 1.字符串转字典:dict_string = "{'name':'linu ...

最新文章

  1. ubuntu14.04初体会
  2. ue4加载本地版本_【虚幻4】创建本地数据库
  3. 华硕路由 ac ax_WiFi 6 路由好在哪里,看看华硕AX路由推荐清单吧
  4. 近期值得读的10篇GAN进展论文
  5. .Net解析html文档类库HtmlAgilityPack完整使用说明
  6. html 日历系统 源码,calendar.html
  7. C#程序将DLL包进EXE方法
  8. Linux 编译 libc log,在Android的源码中添加LOG
  9. Linux bind DNS配置
  10. ld: warning: cannot find entry symbol _start; defaulting to 00000000080481d8
  11. 虚拟机安装JDK1.8
  12. 你必不可能错过的java开源商城项目
  13. 倒立摆小车matlab仿真,倒立摆系统的建模及Matlab仿真分析
  14. 【语音处理】开始学习语音,从基本概念和应用讲起
  15. 分区表丢失修复与系统启动修复
  16. 《学习 Go 语言》学习心得
  17. Docker07:打包部署前端项目
  18. Unity 用ml-agents机器学习造个游戏AI吧(2)(入门DEMO)
  19. pyscripter支持python什么版本_pyscripter 64位下载-pyscripter x64下载2.5.3 官方最新版-Python集成开发环境IDE西西软件下载...
  20. 微信小程序如何实现登录注册带源码

热门文章

  1. 如何通过视频转换器将qsv格式转换成mp4格式
  2. 基于同义词词林扩展版的词语相似度计算
  3. 关于OS端/iOS端QQ表情白边处理方案
  4. 视频专辑:LAMP兄弟连李明老师2011年新版原创Linux视频教程
  5. 吉林大学计算机学院控制与应用实验室,2019计算机考研吉林大学国家物联网虚拟仿真实验教学中心简...
  6. ACR122U Android端应用开发入道指南
  7. MacOS版/Windows桌面版微信多开双开教程技巧以及双开代码
  8. 微信windows版_微信Windows版更新3.0:小程序可添加至桌面
  9. 传感器i2c与arduino连接_ARDUINO的I2C通信详解 - arduino读取I2C总线上连接设备的地址...
  10. 计算机水平考试模块数量,职称计算机考试科目、模块数量是什么