Python day7
一.字符编码
1 以什么编码存的就要以什么编码取出
ps:内存固定使用unicode编码,
我们可以控制的编码是往硬盘存放或者基于网络传输选择编码
2 数据是最先产生于内存中,是unicode格式,要想传输需要转成bytes格式
#unicode----->encode(utf-8)------>bytes
拿到bytes,就可以往文件内存放或者基于网络传输
#bytes------>decode(gbk)------->unicode
3 python3中字符串被识别成unicode
python3中的字符串encode得到bytes
4 了解
python2中的字符串就bytes
python2中在字符串前加u,就是unicode
二。文件处理
#open: #1 会向操作系统发起系统调用,操作会打开一个文件 #2 在python程序中会产生一个值指向操作系统打开的那个文件,我们可以把该值赋值一个变量 #回收资源 #1 f.close():一定要做,关闭操作系统打开的文件,即回收操作系统的资源 #2 del f:没必要做,因为在python程序运行完毕后,会自动清理与该程序有关的所有内存空间 #文本文件:只读模式,文件不存在报错 # f=open(r'aaaa.py','r',encoding='utf-8') # print(f.read()) # print(f.read # # line(),end='') # print(f.readlines()) # print(f.readable()) # print(f.writable()) #False # f.close() #文本文件:只写模式,文件不存在则创建空文件,文件存在则清空 # f=open('new.txt','w',encoding='utf-8') # f.write('1111111\n') # f.writelines(['22222\n','3333\n','444444\n']) # # print(f.writable()) # f.close() #文本文件:只追加写模式,文件不存在则创建,文件存在 # f=open('new_2','a',encoding='utf-8') # print(f.readable()) # print(f.writable()) # f.write('33333\n') # f.write('44444\n') # f.writelines(['5555\n','6666\n']) # f.close() #rb # f=open('aaaa.py','rb') # print(f.read().decode('utf-8')) # f=open('1.jpg','rb') # data=f.read() #wb # f=open('2.jpg','wb') # f.write(data) # f=open('new_3.txt','wb') # f.write('aaaaa\n'.encode('utf-8')) #ab # f=open('new_3.txt','ab') # f.write('aaaaa\n'.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) #循环取文件每一行内容 with open('a.txt','r',encoding='utf-8') as f: while True: line=f.readline() if not line:break print(line,end='') lines=f.readlines() #只适用于小文件 print(lines) data=f.read() print(type(data)) for line in f: #推荐使用 print(line,end='') #文件的修改 #方式一:只适用于小文件 import os with open('a.txt','r',encoding='utf-8') as read_f,\ open('a.txt.swap','w',encoding='utf-8') as write_f: data=read_f.read() write_f.write(data.replace('alex_SB','alex_BSB')) os.remove('a.txt') os.rename('a.txt.swap','a.txt') #方式二: import os with open('a.txt','r',encoding='utf-8') as read_f,\ open('a.txt.swap','w',encoding='utf-8') as write_f: for line in read_f: write_f.write(line.replace('alex_BSB','BB_alex_SB')) os.remove('a.txt') os.rename('a.txt.swap','a.txt')