一、字符编码
1.用什么编码encode就用什么解码decode
ps:内存固定使用unicode编码
我们可以控制的编码是往硬盘存放或基于网络传输
python3解释器默认的字符编码是utf-8
py2解释器默认的字符编码是ASCII
2.数据最先产生于内存,是unicode格式,要想传输需转成bytes格式
#unicode-------->encode(utf-8)----------->bytes
拿到bytes就可以往文件存放或基于网络传输
#bytes------->decode(utf-8)---------->unicode
3.py3中的字符串encode得到bytes
二、文件处理
open:
1.会像操作系统,发起系统调用,操作会打开一个文件
2.在Python程序中会一个值指向操作系统打开的那个文件,我们可以把该值赋值给一个软件变量
#回收资源
1.f.close()关闭操作系统打开的文件,即2回收操作系统的资源(必要的)
2.del f:没必要做自己去做,在py程序运行完之后,会自动清理与该程序有关的所有内存空间
文本文件:只读模式
f=open(r'aaa.py','r',encoding='utf-8') f.read() print(f.readlines())#文件所有的行都进来 print(f.readline(),end=' ')#一行一行的读 f.close()
只写模式,文本文件不存在则创建空文件,文件存在则清空
f=open('new1_txt','w',encoding='utf-8') f.write('11111111 ') f.writelines(['23222 ','555555 '])#同时写多行 f.writable()#没有弄懂f.writable()的作用 print(f) f.close()
文本文件,只追加模式,文本文件不存在则创建,文件存在则清除
f=open('new2_txt','a',encoding='utf-8') print(f.readable()) print(f.writable()) f.write('3333 ') f.writelines(['444444444 ','555555 ']) f.close()
rb
f=open('aaa.py','rb') print(f.read().decode('utf-8')) 复制图片 f=open('28.jpg','rb') data=f.read()
wb
f=open('new3_txt','wb') f.write('aaaa '.encode('utf-8')) f=open('29.jpg','wb') f.write(data)
ab
f=open('new3_txt','ab') f.write('aaaaaa '.encode('utf-8'))
上下文管理
with open('aaaa.py','r',encoding='utf-8') as read_f, open('aaaa_new.py','w',encoding='utf-8') as write_f: data=read_f.read() write_f.write(data)
所有的数据自带布尔值
修改文本文件用replace