浅析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 HTMLParser模块解析html获取url实例
Apr 08 Python
Python编写生成验证码的脚本的教程
May 04 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
Python pandas用法最全整理
Aug 04 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
Feb 11 Python
pycharm 设置项目的根目录教程
Feb 12 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
python 链接sqlserver 写接口实例
Mar 11 Python
详解python中的异常捕获
Dec 15 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 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过滤html标记属性类用法实例
2014/09/23 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
PHP实现的同步推荐操作API接口案例分析
2016/11/30 PHP
php+ajax简单实现全选删除的方法
2016/12/06 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
JS阻止用户多次提交示例代码
2014/03/26 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
小程序点餐界面添加购物车左右摆动动画
2020/09/23 Javascript
python查找第k小元素代码分享
2013/12/18 Python
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
python 递归相关知识总结
2021/03/03 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
金山毒霸系列的笔试题
2013/04/13 面试题
农田水利实习自我鉴定
2013/09/19 职场文书
2014年社区学雷锋活动总结
2014/03/09 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
党员示范岗材料
2014/12/19 职场文书