字符編碼:
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
文件處理:
文件處理流程↓
打開文件----->得到文件的句柄並賦值給一個變量---->通過句柄對文件進行操作--->關閉文件
讀文件(read):
f=open(r'aaaa.py','r',encoding='utf-8') print(f.readline(),end='') #讀取一行, print(f.readlines()) #讀取全部,不換行 print(f.readable()) #可讀文件 print(f.writable()) #不可寫文件 f.close() #結束之後必須關閉,否則佔用內存
寫文件(write):
f=open('new.txt','w',encoding='utf-8') f.write('1111111111\n') #寫入第一行 f.writelines(['2222\n','3333\n','4444\n']) #添加多行 print(f.writable()) #可寫
追加:
f=open('new_2','a',encoding='utf-8') print(f.readable()) #不可讀 print(f.writable()) #可寫 f.write('888888\n') #追加單行 f.write('999999\n') f.writelines(['787878\n','878787\n']) #追加多行 f.close()
#rb f=open('aaaa.py','rb') #以字節打開 print(f.read().decode('utf-8')) 拷貝圖片 f=open('1.jpg','rb') #以rb的方式打開1.JPG data=f.read() #data獲取讀取到f的內容 print(data) f2=open('3.jpg','wb') #以寫的方式打開 f2.write(data) #把data的內容寫到f2 f2.close() f.close()#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')
以下的這些作文了解,網上都可以找到詳細的:
打開文件的模式有: r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】 w,只寫模式【不可讀;不存在則創建;存在則清空內容】 x, 只寫模式【不可讀;不存在則創建,存在則報錯】 a, 追加模式【可讀; 不存在則創建;存在則只追加內容】 "+" 表示可以同時讀寫某個文件 r+, 讀寫【可讀,可寫】 w+,寫讀【可讀,可寫】 x+ ,寫讀【可讀,可寫】 a+, 寫讀【可讀,可寫】 "b"表示以字節的方式操作 rb 或 r+b wb 或 w+b xb 或 w+b ab 或 a+b 注:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型,不能指定編碼