浅析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 基础学习第二弹 类属性和实例属性
Aug 27 Python
用Python实现协同过滤的教程
Apr 08 Python
在Django同1个页面中的多表单处理详解
Jan 25 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
Python常用字符串替换函数strip、replace及sub用法示例
May 21 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
python查看文件大小和文件夹内容的方法
Jul 08 Python
Python调用shell命令常用方法(4种)
May 11 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 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
6种php上传图片重命名的方法实例
2013/11/04 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
使用PHP如何实现高效安全的ftp服务器(二)
2015/12/30 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
js自带函数备忘 数组
2006/12/29 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
实践中学习AngularJS表单
2016/03/21 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
全面了解JavaScript对象进阶
2016/07/19 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
Bootstrap fileinput组件封装及使用详解
2017/03/10 Javascript
详解Angular 自定义结构指令
2017/06/21 Javascript
详解nodejs实现本地上传图片并预览功能(express4.0+)
2017/06/28 NodeJs
浅谈jQuery框架Ajax常用选项
2017/07/08 jQuery
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
朴素贝叶斯Python实例及解析
2018/11/19 Python
python中怎么表示空值
2020/06/19 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python排序函数的使用方法详解
2020/12/11 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
大专应届生个人简历的自我评价
2013/10/15 职场文书
英语道歉信范文
2014/01/09 职场文书
高中生活自我鉴定
2014/01/18 职场文书
晚会邀请函范文
2014/01/24 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
奉献演讲稿范文
2014/05/21 职场文书
2015毕业寄语大全
2015/02/26 职场文书
校园开放日新闻稿
2015/07/17 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
MySQL kill不掉线程的原因
2021/05/07 MySQL