python怎么转换文件格式_[python]转换文件编码格式

文件编码格式一直是很多人特别头疼的一件事情,最近由于跨平台开发,经常出现编码格式的问题。所以关于编码格式转换采用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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值