浅析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 相关文章推荐
把MySQL表结构映射为Python中的对象的教程
Apr 07 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
Python时间的精准正则匹配方法分析
Aug 17 Python
django+echart绘制曲线图的方法示例
Nov 26 Python
Flask框架工厂函数用法实例分析
May 25 Python
python ChainMap的使用和说明详解
Jun 11 Python
用pycharm开发django项目示例代码
Jun 13 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
python实现AdaBoost算法的示例
Oct 03 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 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错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
全面解析PHP面向对象的三大特征
2017/06/10 PHP
JQuery魔力之$("tagName")与selector
2012/03/05 Javascript
js控制的回到页面顶端goTop的代码实现
2013/03/20 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
js购物车实现思路及代码(个人感觉不错)
2013/12/23 Javascript
使用js判断当前时区TimeZone是否是夏令时
2014/02/23 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
2017/03/06 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
Angular使用动态加载组件方法实现Dialog的示例
2018/05/11 Javascript
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
解决LayUI表单获取不到data的问题
2018/08/20 Javascript
解决angularjs service中依赖注入$scope报错的问题
2018/10/02 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
Python输入二维数组方法
2018/04/13 Python
Python 实现「食行生鲜」签到领积分功能
2018/09/26 Python
详解python 爬取12306验证码
2019/05/10 Python
Python底层封装实现方法详解
2020/01/22 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
Python新手学习函数默认参数设置
2020/06/03 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
最便宜促销价格订机票:Airpaz(总部设在印尼,支持中文)
2018/11/13 全球购物
国际金融专业大学生职业生涯规划书
2013/12/28 职场文书
教学实习自我评价
2014/01/28 职场文书
视光学专业自荐信
2014/06/24 职场文书
普通党员群众路线教育实践活动心得体会
2014/11/04 职场文书
放假通知怎么写
2015/08/18 职场文书
导游词之天津古文化街
2019/11/09 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
在项目中使用redis做缓存的一些思路
2021/09/14 Redis