浅析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中DJANGO简单测试实例
May 11 Python
安装Python的教程-Windows
Jul 22 Python
Python基于socket实现简单的即时通讯功能示例
Jan 16 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
Python中判断输入是否为数字的实现代码
May 26 Python
python存储16bit和32bit图像的实例
Dec 05 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
Python如何使用队列方式实现多线程爬虫
May 12 Python
Python 如何批量更新已安装的库
May 26 Python
Python 创建TCP服务器的方法
Jul 28 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 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
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP 文件系统详解
2012/09/13 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
Sample script that deletes a SQL Server database
2007/06/16 Javascript
Javascript继承(上)——对象构建介绍
2012/11/08 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
比较常见的javascript中定义函数的区别
2015/11/09 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
深入理解JavaScript程序中内存泄漏
2016/03/17 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
JS实现超级好看的鼠标小尾巴特效
2020/12/01 Javascript
跟老齐学Python之for循环语句
2014/10/02 Python
基于python编写的微博应用
2014/10/17 Python
python正则表达式之对号入座篇
2018/07/24 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
微软新西兰官方网站:Microsoft New Zealand
2018/08/17 全球购物
医院护士的求职信
2014/01/03 职场文书
网络工程师职业规划
2014/02/10 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
快递员岗位职责
2014/09/12 职场文书
初一语文教学反思
2016/03/03 职场文书
简单聊聊TypeScript只读修饰符
2022/04/06 Javascript
Golang Elasticsearches 批量修改查询及发送MQ
2022/04/19 Golang
MySQL 逻辑备份 into outfile
2022/05/15 MySQL