浅析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网络编程学习笔记(10):webpy框架
Jun 09 Python
Python2.x中str与unicode相关问题的解决方法
Mar 30 Python
一波神奇的Python语句、函数与方法的使用技巧总结
Dec 08 Python
详解python时间模块中的datetime模块
Jan 13 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
python3学习笔记之多进程分布式小例子
Feb 13 Python
详谈Python中列表list,元祖tuple和numpy中的array区别
Apr 18 Python
python3 xpath和requests应用详解
Mar 06 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
python爬虫中url管理器去重操作实例
Nov 30 Python
教你用Python写一个植物大战僵尸小游戏
Apr 25 Python
Python闭包的定义和使用方法
Apr 11 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 SQL之where语句生成器
2009/03/24 PHP
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
thinkphp框架page类与bootstrap分页(美化)
2017/06/25 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
JavaScript toFixed() 方法
2010/04/15 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
javascript中 try catch用法
2015/08/16 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
JS正则表达式之非捕获分组用法实例分析
2016/12/28 Javascript
Vue.js中用webpack合并打包多个组件并实现按需加载
2017/02/17 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
JavaScript Date对象功能与用法学习记录
2020/04/28 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
python面向对象入门教程之从代码复用开始(一)
2018/12/11 Python
python实现串口自动触发工作的示例
2019/07/02 Python
python3 求约数的实例
2019/12/05 Python
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
生物化学研究助理员求职信
2013/10/09 职场文书
给儿子的表扬信
2014/01/15 职场文书
大学生求职工作的自我评价
2014/02/13 职场文书
电子专业求职信
2014/06/19 职场文书
500字小学生检讨书
2015/02/19 职场文书
护士工作心得体会
2016/01/25 职场文书
python实现自动化群控的步骤
2021/04/11 Python
教你使用TensorFlow2识别验证码
2021/06/11 Python