一、程序执行的三大核心硬件(***):
cpu
内存
硬盘
正常执行一个程序的要点:
一、将硬盘中的数据读到内存
二、由cpu读内存中的数据进行执行
三、在执行程序的时候,生成的数据,优先存入内存python
二、python解释器执行一个py文件过程(***) 若是没有python解释器,py文件单纯就是一个文本文件 因此说,想执行py文件,必须先执行python解释器 一、将python解释器的代码有硬盘读到内存 二、将py文件以普通文本文件的格式由硬盘读到内存 三、python解释器去内存中读取py文件的数据 四、识别python语法,执行相应的操做 ps:任何一个文本编辑器的执行,前两部都同样
字符:世界上一切语言、文字
有必要考虑,图片文件、音频文件、视频文件?windows
文件的输入和输出是两个过程 人类输入的内容都是人类本身能够识别的字符 计算机只能识别0101010二进制字符 将人类的字符,存入内存和硬盘,要经历一个过程: 人类的字符 >>>>>>> (字符编码表) >>>> 计算机二进制 0 a 1 b 01 a 10 b 00 c 11 d ASCII码表(美国) 用八位二进制来表明一个英文字符(全部的英文字符+符号一共大概128左右) 0000 0000 1111 1111 最多只能表示255位 八位二进制 = 8 bit 8 bit = 1 bytes 1024bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB GBK(中国) 用2个bytes来表明一个字符,兼容英文字符 0000 0000 0000 0000 1111 1111 1111 1111 最多能够表示65535位 shit(小日子过得不错的日本人) fuck(韩国的) 万国码(unicode) 为了兼容全部的国家的字符,生成unicode 全部的字符都用2bytes 0101 0101 a 0000 0000 0101 0101 a 一、占用存储空间 二、io次数增长,程序运行速度变慢(最致命) 在unicode二进制数据存入硬盘的时候,作优化 utf-8: utf-8只与unicode有对应关系 unicode transformation format 全部的英文字符用1个bytes表示 全部的中文字符用3个bytes表示 如今的计算机: 内存都是:unicode 硬盘都是:utf-8
须要掌握: 一、用户不管输入什么字符,存入内存,unicode均可以兼容 二、硬盘中不管是什么编码的文件,读到内存,均可以兼容unicode 数据的传输: 优先以本身的本国字符编码进行传递 必须掌握(******)#五星级 (内存)unicode二进制字符 >>> 编码(encode) >>> (硬盘)utf-8二进制字符 (硬盘)utf-8二进制字符 >>> 解码(decode) >>> (内存)unicode二进制字符 (******) 保证不乱码核心: 用什么编码存的数据,就用什么编码取
python2 : 默认的字符编码ascii码(由于当时的unicode还没盛行) python3: 默认的字符编码utf-8 文件头: # coding:utf-8 用英文字符,是为了让全部的计算机均可以识别 pycharm默认的字符编码是: utf-8 windows操做系统默认字符编码: gbk
import copy l1 = [257, 'a', [4, 5, 6]] print(l1) print(id(l1)) # print(id(l1[0])) l2 = copy.deepcopy(l1) # [1, 'a', [4, 5, 6]] l2[2][0] = 4444 print(l2) print(id(l2)) print("l1:", l1) print("id_l1:", id(l1)) 这里只须要了解便可,结论就是: 浅copy只是把大框架拿了过来,,而里面的值仍是与原来同样,即ID也同样,若改变大框架里面的小列表中的值,copy后小列表中的ID以及原小列表的ID都会改变。 深copy就是不止把大框架拿了过来,而把小框架里的东西都拿了过来,改变小列表中的值,这个小列表的ID会变,而原小列表ID不变。
一、什么是文件?框架
操做系统给你提供操做硬盘的一个工具编辑器
二、为何要用文件?工具
为了知足人类和计算机永久保存数据优化
三、怎么用文件?编码
相对路径:必须与当前文件在同一目录操作系统
绝对路径:固定的只能在这台电脑操做code
四、经常使用的字符意愿orm
'r' 以只读方式打开文件(默认) 'w' 以写入的方式打开文件,注意会已存在的文件,即将已有的文件删除 'x' 若是文件已存在,用此方式打开会发生异常 'a' 以写入的方式打开,若是文件存在,会在末尾追加写入 'b' 以二进制打开,主要用于图片,视频 't' 以文本的方式打开 '+' 能够将r+w变成可读写模式 'u' 通用换行符
五、文件处理
f = open("a.txt") print(f.readable()) # 判断当前文件是否可读 print(f.writable()) # 判断当前文件是否可写 # del f # 回收变量资源 f.close() # 回收操做系统的资源 with open('a.txt',mode='r')as rf,\ open('a.txt',mode='w')as wf: # with会自动帮你回收操做系统的资源,无需本身操做 print(rf.readable()) print(wf.writable()) # r进行转义 with open(r'D:\项目路径\python13期\day07\a.txt')as f: print(f.read()) # 读取文件
六、文件处理模式
with open(r'th.jpg', mode='rb')as rf,\ open('xiawuchameilv.png', mode='wb')as wf: xiawuchameilv = rf.read() wf.write(xiawuchameilv) """ 打开文件的三种模式: r : 一、只读 二、若是文件不存在,会报错 w:(慎用) 一、只写 二、若是文件不存在,则新建一个文件写入数据 三、若是文件内存在数据,会将数据清空,从新写入 a: 一、追加写 二、若是文件内存在数据,会在已有数据的后面追加数据 三、若是文件不存在,则新建一个文件写入数据 处理文件的模式: t b """
七、文件打开模式
with open(r'a.txt', 'r', encoding='utf-8')as f: print(f.readable()) print(f.read()) print(f.readline()) # 执行一次,打印一行内容 print(f.readlines()) print(f.read()) print(f.readable()) print(f.read()) >>>True 亚峰666 [] True with open(r'b.txt', 'w', encoding='utf-8')as f: f.writelines(["干巴爹\n",'加油']) >>>干巴爹 加油 with open(r'aaaaa.txt','a',encoding='utf-8')as f: print(f.writable()) f.write("\n努力,奋斗") >>>努力,奋斗