Python标准库:codecs【专门做编码转换】【open()、encode()、decode()、lookup()、getencoder()】【读写文件codecs.open()优于open()】

codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换

codecs模块提供一个open方法,三个参数encoding, errors, buffering,这三个参数都是可选参数,但是对于应用来说,需要明确指定encoding的值,而errors和buffering使用默认值即可。使用方法如下:

import codecs
# 从文件读取数据
data = codecs.open("2.txt", encoding="UTF-8")
# 一行一行读取数据
data1 = data.readline()
print(data1)
# 读取完数据要把数据对象进行关闭,从内存里面释放出来
data.close()

一、常用函数

1、codecs.open()

codecs.open(filename, mode='r', encoding=None, errors='strict', buffering=1)

使用给定的 mode 打开已编码的文件并返回一个 StreamReaderWriter的实例,提供透明的编码/解码;与内置函数open类似。

常用的errors字符串

errors字符串描述
strict默认,出现编解码错误抛出UnicodeError
ignore忽略错误格式(编解码出错)的数据
replace(仅适用文本编码)编码错误替换为 ‘?’

注意:文本编码—>用于将Unicode字符串编码为字节串的编码器。

2、codecs.encode()

codecs.encode(obj, encoding='utf-8', errors='strict')
使用为 encoding 注册的编解码器对 obj 进行编码,类似str.encode()方法。

>>> codecs.encode("你好,world",encoding='ascii')
Traceback (most recent call last):
  ...
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
>>>
>>> codecs.encode("你好,world",encoding='ascii',errors='replace')
b'??,world'

3、codecs.decode()

codecs.decode(obj, encoding='utf-8', errors='strict')
使用为 encoding 注册的编解码器对 obj 进行解码,类似str.decode()方法。

4、codecs.lookup()

codecs.lookup(encoding)

在 Python 编解码器注册表中查找编解码器信息,并返回一个 CodecInfo 对象。

>>> import codecs
>>> 
>>> gbk = codecs.lookup('gbk')
>>> gbk.encode("你好,world")
(b'\xc4\xe3\xba\xc3,world', 8)
>>> codecs.lookup('uuuu')
Traceback (most recent call last):
  ...
LookupError: unknown encoding: uuuu
CodeInfo对象属性/方法描述
name编码名称
encode/decode无状态的编解码函数
streamwriter/streamreader流式写入器和读取器类或工厂函数。
incrementalencoder/incrementaldecoder增量式的编码器和解码器类或工厂函数。
>>> utf8 = codecs.lookup('utf-8')
>>> utf8.name
"utf-8"

5、codecs.getencoder()

codecs.getencoder(encoding)

查找给定编码的编解码器并返回其编码器函数。

>>> u8_encode = codecs.getencoder("utf8")
>>> u8_encode("你好,world.")
(b'\xe4\xbd\xa0\xe5\xa5\xbd,world.', 9)



参考资料:
python模块之codecs
python :codecs模块简介
python :codecs模块简介
Python标准库—codecs模块
读写文件时codecs.open()优于open()
python codecs.open()及文件操作
WITH OPEN() AS和CODECS.OPEN()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值