浅析Python 字符编码与文件处理


Posted in Python onSeptember 24, 2020

Python字符编码

目前计算机内存的字符编码都是Unicode,目前国内的windows操作系统采用的是gbk。

python2默认的字符编码方式是ASCII

python3默认的字符编码方式是Unicode

.py文件头部的#coding:utf-8是帮助python识别.py文件的编码方式,故在写.py文件时要注意文件头和文件保存时的编码方式要相同,否则可能会出现乱码

python程序运行过程:

  1. python的解释器现在内存中启动
  2. 解释器把要运行的文件以文本文件的形式读进内存
  3. 解释器按照文件的语法格式解释执行代码

python2和python3程序的运行方式基本相同

python2的解释器在运行程序时,将文件内的代码按照文件头的编码读进内存。例如文件头部的编码是gbk,python2读进内存的时候,直接把文件在硬盘里的gbk二进制编码读进内存。如果在不是以gbk为默认编码的终端输出时,会出现乱码。python2可以在字符串对象前加'u'表示Unicode字符,但是这样就不是str变量了。虽然pyhton2也能支持Unicode编码,但是这就像给python2打了一个大补丁。python2的Unicode对象就是python3str对象。

python3的解释器就好多了,它在执行文件内的代码之前会先将代码按照文件头的编码转换成Unicode编码读进内存。这样无论是在什么编码的机器上运行,Unicode编码都能很好的转换成相应的编码。

Python 文件处理

python程序不能直接操作硬盘的文件,一般都是通过操作系统提供的接口间接地操作文件。

一般来说,对文件的操作的mode有两种,t:字符方式 b:二进制方式

字符方式只能操作文本文件,在打开文件的时候需要指定encoding,不然会因为短句不准确产生乱码

二进制方式可以操作所有的文件,在打开文件的时候不要指定encoding

操作完文件后调用文件对象的close()函数会关闭文件,这只是关闭操作系统对文件的访问,在程序里文件对象会在程序结束的时候自动释放,所以在操作文件结束后,记得调用close()函数,释放系统资源。当然可以用with上下文管理自动释放资源。

以上就是浅析Python 字符编码与文件处理的详细内容,更多关于Python 字符编码与文件处理的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python类属性与实例属性用法分析
May 09 Python
Python中threading模块join函数用法实例分析
Jun 04 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
python中装饰器级连的使用方法示例
Sep 29 Python
Python通过Django实现用户注册和邮箱验证功能代码
Dec 11 Python
python+POP3实现批量下载邮件附件
Jun 19 Python
对python以16进制打印字节数组的方法详解
Jan 24 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
Python jieba库用法及实例解析
Nov 04 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
python实现按日期归档文件
Jan 30 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 #Python
python判断元素是否存在的实例方法
Sep 24 #Python
python 实现单例模式的5种方法
Sep 23 #Python
python zip()函数的使用示例
Sep 23 #Python
python 判断一组数据是否符合正态分布
Sep 23 #Python
python合并多个excel文件的示例
Sep 23 #Python
详解Python yaml模块
Sep 23 #Python
You might like
十天学会php(1)
2006/10/09 PHP
PHP PDO函数库详解
2010/04/27 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
基于php双引号中访问数组元素报错的解决方法
2018/02/01 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
PHP递归算法的简单实例
2019/02/28 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
js弹窗代码 可以指定弹出间隔
2010/07/03 Javascript
jQuery EasyUI API 中文文档 - MenuButton菜单按钮使用介绍
2011/10/06 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
js 实现数值的千分位及保存小数方法(推荐)
2016/08/01 Javascript
微信小程序-消息提示框实例
2016/11/24 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
Python基于list的append和pop方法实现堆栈与队列功能示例
2017/07/24 Python
Python 从相对路径下import的方法
2018/12/04 Python
Python静态类型检查新工具之pyright 使用指南
2019/04/26 Python
用Anaconda安装本地python包的方法及路径问题(图文)
2019/07/16 Python
Python将视频或者动态图gif逐帧保存为图片的方法
2019/09/10 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
浅谈keras中自定义二分类任务评价指标metrics的方法以及代码
2020/06/11 Python
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
财务会计专业求职信
2014/06/09 职场文书
军人离婚协议书样本
2014/10/21 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
CSS 圆形进度栏
2021/04/06 HTML / CSS
使用Apache Camel表达REST服务的方法
2022/06/10 Servers