浅析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入门篇之字典
Oct 17 Python
Python爬取APP下载链接的实现方法
Sep 30 Python
关于Python中Inf与Nan的判断问题详解
Feb 08 Python
python+matplotlib绘制饼图散点图实例代码
Jan 20 Python
详解python读取image
Apr 03 Python
pyqt 实现QlineEdit 输入密码显示成圆点的方法
Jun 24 Python
Python实现Selenium自动化Page模式
Jul 14 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
Jan 10 Python
Python qrcode 生成一个二维码的实例详解
Feb 12 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
如何使用python写截屏小工具
Sep 29 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抓取页面的几种方法详解
2013/06/17 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
Query中click(),bind(),live(),delegate()的区别
2013/11/19 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
Backbone中View之间传值的学习心得
2016/08/09 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
JS中parseInt()和map()用法分析
2016/12/16 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
js、jquery实现列表模糊搜索功能过程解析
2020/03/27 jQuery
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
python正则分析nginx的访问日志
2017/01/17 Python
python实现定时提取实时日志程序
2018/06/22 Python
django富文本编辑器的实现示例
2019/04/10 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
北美领先的牛仔品牌:Buffalo David Bitton
2017/05/22 全球购物
几个人围成一圈的问题
2013/09/26 面试题
党校培训思想汇报
2014/01/03 职场文书
大学生村官事迹材料
2014/01/21 职场文书
教师考察材料范文
2014/06/03 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
优秀校长事迹材料
2014/12/24 职场文书
使用logback实现按自己的需求打印日志到自定义的文件里
2021/08/30 Java/Android