浅析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框架中的中间件
Jul 24 Python
Python中列表list以及list与数组array的相互转换实现方法
Sep 22 Python
python实现蒙特卡罗方法教程
Jan 28 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
Python 循环终止语句的三种方法小结
Jun 24 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
查看keras的默认backend实现方式
Jun 19 Python
Python调用REST API接口的几种方式汇总
Oct 19 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
Django程序的优化技巧
Apr 29 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
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
PHP4实际应用经验篇(3)
2006/10/09 PHP
PHP中对数据库操作的封装
2006/10/09 PHP
PHP备份/还原MySQL数据库的代码
2011/01/06 PHP
Laravel 在views中加载公共页面的实现代码
2019/10/22 PHP
php实现简易计算器
2020/08/28 PHP
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
JS获取农历日期具体实例
2013/11/14 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
JS搜狐面试题分析
2016/12/16 Javascript
浅谈Vue的响应式原理
2019/05/30 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
Vue3.x源码调试的实现方法
2019/10/13 Javascript
编写Python脚本来获取Google搜索结果的示例
2015/05/04 Python
详解 Python 读写XML文件的实例
2017/08/02 Python
python实现学生管理系统
2018/01/11 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
对python以16进制打印字节数组的方法详解
2019/01/24 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
2019/07/06 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
用html5的canvas和JavaScript创建一个绘图程序的简单实例
2016/07/06 HTML / CSS
英国版MAC彩妆品牌:Illamasqua
2018/04/18 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
企业面试题试卷附带答案
2015/12/20 面试题
英文自荐信格式
2013/11/28 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
贯彻学习两会心得体会范文
2014/03/17 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL