Python3 中文文件读写方法


Posted in Python onJanuary 23, 2018

字符串在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()

以上这篇Python3 中文文件读写方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中使用通用视图的方法
Jul 21 Python
python中numpy.zeros(np.zeros)的使用方法
Nov 07 Python
python爬取各类文档方法归类汇总
Mar 22 Python
实例讲解python中的序列化知识点
Oct 08 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
python模糊图片过滤的方法
Dec 14 Python
详解python算法之冒泡排序
Mar 05 Python
简单了解python中对象的取反运算符
Jul 01 Python
python求最大值,不使用内置函数的实现方法
Jul 09 Python
Django框架创建mysql连接与使用示例
Jul 29 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
python快速安装OpenCV的步骤记录
Feb 22 Python
Python3之文件读写操作的实例讲解
Jan 23 #Python
Python实现邮件的批量发送的示例代码
Jan 23 #Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 #Python
python正则表达式面试题解答
Apr 28 #Python
Django中使用celery完成异步任务的示例代码
Jan 23 #Python
python3 发送任意文件邮件的实例
Jan 23 #Python
Python程序员面试题 你必须提前准备!(答案及解析)
Jan 23 #Python
You might like
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
详解WordPress中过滤链接与过滤SQL语句的方法
2015/12/18 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
setTimeout和setInterval的深入理解
2013/11/08 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
vue.js的提示组件
2017/03/02 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
vueJs实现DOM加载完之后自动下拉到底部的实例代码
2018/08/31 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
vue实现行列转换的一种方法
2019/08/06 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
python实现学生管理系统
2018/01/11 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
django创建简单的页面响应实例教程
2019/09/06 Python
wxPython实现绘图小例子
2019/11/19 Python
Pytorch之parameters的使用
2019/12/31 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
CSS3实现的炫酷菜单代码分享
2015/03/12 HTML / CSS
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
打印机墨盒:123Inkjets
2017/02/16 全球购物
Java中的基本数据类型所占存储空间大小固定的吗
2012/02/15 面试题
国旗下的讲话演讲稿
2014/05/08 职场文书
领导四风问题整改措施思想汇报
2014/10/13 职场文书
培训通知书模板
2015/04/17 职场文书
生日祝酒词大全
2015/08/10 职场文书
redis 限制内存使用大小的实现
2021/05/08 Redis
Java 常见的限流算法详细分析并实现
2022/04/07 Java/Android