字符编码及文件执行
1.运行程序的三个核心硬件:cpu、内存、硬盘
任何一个程序想要运算,必选现有硬盘加载到内存,然后cpu去内存取指执行。
2.python解释器运行一个py文件(xxx.py)步骤
1.将python解释器的代码由硬盘读到内存
2.将xxx.py以普通文本形式读到内存
3.python读取文件内容,识别python语法,执行相应操作。
ps:普通文本编辑器与python解释器前两步都是一样的
一、字符编码
字符编码针对的是文字,那也就意味着这里不需要考虑视频文件、音频文件等其他文件。意思是,字符吗只跟文本文件有关。人在操作计算机的时候输入的是人能看懂的字符,但是计算机智能识别010101这样的二进制数字。
1.字符编码表
就是字符与数字的对应关系
ASCII码表
用八位二进制表示一个英文字符 所有的英文字符+符号最多也就在125位左右
0000 0000
1111 1111
GBK
用2Bytes表示一个中文字符,还可以用1Bytes表示一个英文字符
2.万国码unicode
统一用2Bytes表示所有字符
a0000 0000 0010 1010
1.浪费存储空间
2.io次数增减,程序运行效率降低(致命)
当内存中的unicod编码格式数据存到硬盘的时候,会按照utf-8编码
会将unicode的英文字符由原来的2Bytes变成1Bytes
现在的计算机
内存都是unicode
硬盘都是utf-8
3.unico的两个特点
1.用户在输入的时候,无论输什么字符都能够兼容万国字符
2.其他国家编码的数据由硬盘读到内存的时候unicode与其他各个国家的编码都有对应关系
4.数据由内存保存到硬盘
1.内存中的unico格式二进制数字 >>>编码(encode)>>> utf-8格式的二进制数据
5.硬盘中的数据由硬盘读到内存
1.硬盘中的uft-8格式的二进制数据 >>>解码(decode)>>> 内存中unicode格式的二进制数据
6.pycharm终端用的是utf-8格式
7.windows终端采用的是gbk
总结:
x = ‘牛’
res1 = x.encode('utf-8') #将unicode编码成utf-8的二进制数据
res2 = res1.decode('utf-8')#将硬盘中的utf-8格式的二进制数据解码成unicode
二、文件执行
1.什么是文件?
操作系统提供给用户操作复杂硬件的简易接口
2.为什么操作文件?
人或者应用程序需要永久的保存数据
3.通过python代码操作文件
f = open(r'D:\xxxx\xxxx\xxx') #向操作系统发送请求,打开某个文件(‘r’用来取消转义)
应用程序想要操作计算机硬件,必须通过操作系统来简洁的操作
4.操作流程
f = open(r'D:\xxxx\xxxx\xxx')
print(f,read()) #windows操作系统默认的编码是gbk
f.read()#向操作系统转发请求,读取文件内容
f.closed()#告诉操作系统,关闭打开的文件
5.打开多文件
ith open(r'D:\Python项目\day07\a.txt',encoding='utf-8') as f ,\
open(r'D:\Python项目\day07\b.txt',encoding='utf-8') as f1: # f仅仅是一个变量名 你把它看成
一个遥控器
print(f)
print(f.read())
print(f1)
print(f1.read())
6.文件处理模式
1.r模式
with open(r'D:\ZZJ\zzj.txt',mode = 'r',encoding= 'utf-8') as f: #mode参数可以不加,不写的话默认是文本文件,t不写默认就是t
可读、不可写
with open(r'D:\ZZJ\zzj.txt',mode = 'rb',encoding= 'utf-8') as f:
以二进制的形式读出
r模式在打开的文件不存在的情况下,会直接报错。
2.w模式
w模式:w模式一定要慎用
1.文件不存在的情况下,自动创建该文件
2.当文件存在时,会清空该文件内容后再写入
with open(r'xxx.txt',mode='w',encoding='utf-8') as f:
还可以以列表形式写入:
# l = ['xxx','xxx,'xxx']
f.writelines(l)
3.a模式
1.当文件不存在的情况下,自动创建该文件
2.当文件存在的情况下,不会清空文件内容,文件的光标会移动到文件的最后,添加新内容。
with open(r'yyy.txt',mode='a',encoding='utf-8') as f: