字符编码,及文件操做

1 运行程序的三个核心硬件

CPUpython

内存编辑器

硬盘优化

 

2 Python解释器运行一个py文件的步骤

1 将Python解释器的代码从硬盘读到内存中去编码

2 将py文件从硬盘读到内存去操作系统

3 Python读取文件内容,识别Python语法,执行相应操做code

注意;普通的文本编辑器与Python解释器的前两部是同样的blog

3 字符编码

字符编码是针对文字,字符编码只跟文本有关接口

文本编辑器的输入和输出是两个过程图片

人在操做计算机输入的是人能看的懂得字符内存

但计算机只能识别010101这样的二进制数据

因此就会出现字符编码表(字符编码表就是字符与数字的对应关系)

 

1 ACSLL码表

用八位二进制表示一个字符

全部的英文字符+符号最多也就在125位左右

2 GBK

用2个bytes来表示一个中文字符,还用一个bytes表示一个英文字符

 

基于上面的推导

任何一个国家想要让计算机支持知己国家的语言,就必须建立一个本身的字符与数字的对应关系

3 万国码

应为,每一个国家都有了本身的字符与数字对应关系的表,但只能本身国家的用,并不能与其余国家交流,因此就出现了万过吗

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

 

2 文件操做

 

什么是文件

文件就是操做系统给用户提供了有个操做硬盘的简易的接口

为何要操做文件

咱们须要操做硬盘存储文件

经过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() 向文件写入内容。写一行在尾部追加内容
相关文章
相关标签/搜索