浅析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实现删除文件与目录的方法
Nov 10 Python
在Python中使用mongoengine操作MongoDB教程
Apr 24 Python
在Python中使用成员运算符的示例
May 13 Python
python 线程的暂停, 恢复, 退出详解及实例
Dec 06 Python
python实现多线程抓取知乎用户
Dec 12 Python
python数据抓取分析的示例代码(python + mongodb)
Dec 25 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
使用python制作一个为hex文件增加版本号的脚本实例
Jun 12 Python
django之对FileField字段的upload_to的设定方法
Jul 28 Python
python 类之间的参数传递方式
Dec 20 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 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 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
JS动态添加与删除select中的Option对象(示例代码)
2013/12/25 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
JS组件Bootstrap实现下拉菜单效果代码
2016/04/26 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
浅谈js中startsWith 函数不能在任何浏览器兼容的问题
2017/03/01 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
Node.js成为Web应用开发最佳选择的原因
2018/02/05 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[02:25]DOTA2英雄基础教程 生死判决瘟疫法师
2013/12/06 DOTA
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
在pycharm中显示python画的图方法
2019/08/31 Python
Django框架反向解析操作详解
2019/11/28 Python
详解python破解zip文件密码的方法
2020/01/13 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
Python greenlet和gevent使用代码示例解析
2020/04/01 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
2020/05/22 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
改变 Python 中线程执行顺序的方法
2020/09/24 Python
英国设计师泳装、沙滩装和比基尼在线精品店:Beach Cafe
2019/08/28 全球购物
美术专业学生个人自我评价
2013/09/19 职场文书
求职信模板标准格式范文
2014/02/23 职场文书
道德演讲稿
2014/05/21 职场文书
好媳妇事迹材料
2014/12/24 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL