Python3 中文文件读写方法

作者:SuPhoebe 时间:2021-07-14 20:02:39 

字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

在新版本的python3中,取消了unicode类型,代替它的是使用unicode字符的字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码后的变为了字节类型(bytes) 但是两个函数的使用方法不变:


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

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进行解码得到的结果,将无法还原原来的字符串内容

文件读取问题

假如我们读取一个文件,文件保存时,使用的编码格式,决定了我们从文件读取的内容的编码格式,例如,我们从记事本新建一个文本文件test.txt, 编辑内容,保存的时候注意,编码格式是可以选择的,例如我们可以选择gb2312,那么使用python读取文件内容,方式如下:


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()函数可以指定编码的类型:


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

来源:http://blog.csdn.net/u013007900/article/details/62219289

标签:Python3,中文,文件,读写
0
投稿

猜你喜欢

  • python TCP Socket的粘包和分包的处理详解

    2021-06-14 16:49:50
  • MySQL之存储过程按月创建表的方法步骤

    2024-01-25 02:40:40
  • 程序员用vscode听网易云的实现

    2022-12-20 06:31:55
  • python处理json文件的四个常用函数

    2023-01-17 21:26:58
  • Python+Pygame制作简易版2048小游戏

    2022-12-01 18:05:03
  • python import 上级目录的导入

    2021-09-13 00:54:29
  • WEB页面工具语言XML带来的好处

    2008-05-29 11:01:00
  • Firefox下正则诡异问题

    2009-08-03 14:03:00
  • VSCode Python开发环境配置的详细步骤

    2021-06-15 23:29:15
  • JavaScript设计模式之原型模式分析【ES5与ES6】

    2024-05-02 16:29:37
  • Python入门:认识列表和元组

    2022-11-06 02:18:42
  • python实现K最近邻算法

    2021-06-18 04:05:46
  • python基于watchdog库全自动化监控目录文件

    2022-04-21 19:17:47
  • Mysql中报错函数floor()函数和rand()函数的配合使用及原理详解

    2024-01-21 13:41:03
  • linux下python使用sendmail发送邮件

    2023-02-27 00:14:33
  • 基于ES6 Array.of的用法(实例讲解)

    2024-06-13 16:11:28
  • MooTools的Cookie类太“自作聪明”了

    2008-11-13 12:59:00
  • Python实例详解递归算法

    2023-05-17 02:25:06
  • Tkinter组件Entry的具体使用

    2023-03-21 00:41:40
  • python开启摄像头以及深度学习实现目标检测方法

    2023-10-27 03:23:18
  • asp之家 网络编程 m.aspxhome.com