CPUpython
内存编辑器
硬盘优化
1 将Python解释器的代码从硬盘读到内存中去编码
2 将py文件从硬盘读到内存去操作系统
3 Python读取文件内容,识别Python语法,执行相应操做code
注意;普通的文本编辑器与Python解释器的前两部是同样的blog
字符编码是针对文字,字符编码只跟文本有关接口
文本编辑器的输入和输出是两个过程图片
人在操做计算机输入的是人能看的懂得字符内存
但计算机只能识别010101这样的二进制数据
因此就会出现字符编码表(字符编码表就是字符与数字的对应关系)
用八位二进制表示一个字符
全部的英文字符+符号最多也就在125位左右
用2个bytes来表示一个中文字符,还用一个bytes表示一个英文字符
基于上面的推导
任何一个国家想要让计算机支持知己国家的语言,就必须建立一个本身的字符与数字的对应关系
应为,每一个国家都有了本身的字符与数字对应关系的表,但只能本身国家的用,并不能与其余国家交流,因此就出现了万过吗
unicode
统一用2个bytes来表示一个字符
不足之处
1浪费空间
2io 次数增长,程序运行效率减低
当内存中的UIcode的数据存入硬盘中会按照"utf-8"编码
会将unicode的英文字符由原来的2个btes变为1个bytes
会将unicode的中文字符由原来的2个bytes变为3个bytes
utf-8在总体上优化了ubicode
如今的计算机内存都是unicde,硬盘都是utf-8
unicode的两个特色:
1用户输入的时候,不管输什么字符的时候unicode都与其余各国的编码都有对应关系
2其余各国编码的数据由硬盘读到内存中的时候unicode与其余各国的编码都有对应关系
数据由内存保存到硬盘
1内存中的unicode格式的二进制数据 》》》》编码(encode)》》》》utf-8格式的二进制数据
2硬盘中的utf-8的二进制数据》》》解码(decode)>>>>Unicode的二进制数据
保证乱码在于
文本医生么编码,就以什么解码
Python2
py 文件默认使用ASCLL码(应为在开发Python2,nnicode尚未盛行)
Python3
py文件读入解释器默认以utf-8
文件头
#coding:utf-8
应为全部编码都支持英文因此文件头才能生晓
基于Python解释器开发的软件,只要是中文,前面都要加一个u
为了就是Python2 你不指定文件头时候默认用ASCII存储书籍
若是指定文件头那么就会按照文件头的编码格式存储数据
Python3 中字符串默认就是unicode编码格式的二进制数据
注意。pycharm终端就是用的utf-8
Windows终端用的是GBK
什么是文件
文件就是操做系统给用户提供了有个操做硬盘的简易的接口
为何要操做文件
咱们须要操做硬盘存储文件
经过python来操做文件
f = open("text.text",mode="r",encoding="utf-8") f.read() f.close
print(f)
文件的打开模式
r 只读模式
w 只写模式
a 追加模式
操做文件单位的方式
t 文本模式
b 二进制模式(图片,视屏文件)
注意;mode参数,能够默认不写。不写就默认表明rt 只读的文本文件的t能够默认不写,不写就默认为t
w模式(必定要慎用)
注意w模式;文件不存在的状况下自动创立文件,当文件存在的状况下会将文件内容清空,在存入
with open("text.tet",mode="w",encoding="utf-8") as f: f.write() #只写模式的方法 #write() 向文件写入内容。写一行 #writelines()x向文件写内容,能够多写先要建立一个列表等价于for循环一个一个的往里面添加
r 模式(读完内容,会继续向下读,读的是空)
with open("text.tet",mode="r",encoding="utf-8") as f: f.write() #只读模式的方法 #read() 读取文件全部内容
#readline() 一行一行的读,等价于for循环,能够解决一次性读完内存太高的问题
#readable() 是否可读
#weitable() 是否可写
a模式
with open("text.tet",mode="a",encoding="utf-8") as f: f.write() #只写模式的方法 #write() 向文件写入内容。写一行在尾部追加内容