Python3 中文文件读写与编码转换详解

雨后青山
雨后青山
发布时间:2026-10-10| 3人浏览过
原创

本文详解 Python3 中处理中文文件读写的方法。Python3 默认使用 Unicode 字符串,读写文件时需指定编码(如 utf-8 或 gb2312)。通过 codecs.open 可简化编码处理,避免手动 decode/encode 转换。文章提供具体代码示例,展示如何读取、写入及转换不同编码的文本文件,解决中文乱码问题。

Python3 字符串与编码基础

在 Python3 中,字符串(str)类型直接对应 Unicode 编码,不再区分 unicode 和 str 两种类型。这意味着所有字符串在内部都以 Unicode 形式存储。当需要将字符串写入文件或从文件读取时,必须进行编码(encode)或解码(decode)操作,将 Unicode 转换为字节序列(bytes)。

编码转换的核心逻辑是以 Unicode 为中间桥梁:先将其他编码的字节序列解码为 Unicode,再从 Unicode 编码为另一种编码格式。这一过程在 Python3 中依然适用,但操作对象从 unicode 类型变为 str 类型,结果则为 bytes 类型。

decode    encode
bytes ------> str(unicode)------>bytes

手动编码转换示例

以下代码演示了如何手动进行编码转换。假设有一个包含中文的字符串,我们可以将其编码为 gb2312 格式的字节序列,再解码回字符串。需要注意的是,如果解码时使用的编码格式与原始编码不一致,将导致乱码或错误。

u = '中文' #指定字符串类型对象u 
str = u.encode('gb2312') #以gb2312编码对u进行编码,获得bytes类型对象str 
u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,获得字符串类型对象u1 
u2 = str.decode('utf-8')#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的字符串内容

文件读写与编码处理

在读取文件时,Python 会根据文件的实际编码格式返回字节序列。如果未指定编码,且文件编码与系统默认编码不一致,读取可能会失败或产生乱码。因此,明确文件的保存编码至关重要。

以下示例展示了如何读取一个以 gb2312 编码保存的文件,并将其转换为 utf-8 编码的字符串:

f = open('test.txt','r')
s = f.read() #读取文件内容,如果是不识别的encoding格式(识别的encoding类型跟使用的系统有关),这里将读取失败
'''假设文件保存时以gb2312编码保存'''
u = s.decode('gb2312') #以文件保存格式对内容进行解码,获得unicode字符串
'''下面我们就可以对内容进行各种编码的转换了'''
str = u.encode('utf-8')#转换为utf-8编码的字符串str
str1 = u.encode('gbk')#转换为gbk编码的字符串str1
str1 = u.encode('utf-16')#转换为utf-16编码的字符串str1

使用 codecs 模块简化操作

Python 提供了 codecs 模块,其 open 函数允许在打开文件时直接指定编码格式,从而简化读写过程。这种方式避免了手动调用 decode 和 encode 的繁琐步骤,是处理中文文件的推荐方法。

使用 codecs.open 时,必须确保指定的编码格式与文件实际保存的编码一致,否则读取或写入操作将产生错误。以下代码展示了如何使用 codecs 模块读取和写入 utf-8 编码的文件:

import codecs 
f = codecs.open('text.text','r+',encoding='utf-8')#必须事先知道文件的编码格式,这里文件编码是使用的utf-8 
content = f.read()#如果open时使用的encoding和文件本身的encoding不一致的话,那么这里将将会产生错误 
f.write('你想要写入的信息') 
f.close()

通过上述方法,可以高效地处理 Python3 中的中文文件读写问题。关键在于理解编码转换原理,并正确指定文件编码格式。

以上就是 Python3 中文文件读写方法的详细内容,更多关于 Python 编码转换与文件处理的技术资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。