Python隨心記--文件操作處理 open()
阿新 • • 發佈:2018-12-12
操作 偏移 所在 odin lines gbk 編碼 close 換行
文件操作處理 open()
r--只讀 w---只寫 a---追加 x---只寫
讀
f = open(‘xxx‘,‘r‘,encoding=‘utf-8‘) #默認編碼gbk、只讀 data = f.read() #讀取文件 print(data) print(f.readable(),end = ‘‘) #可讀返回True end = ‘‘ d代表不換行 print(f.readline()) #讀取一行 print(f.readlines()) #讀取多行 f.close() #關閉文件
寫
f = open(‘xxx‘,‘w‘,encoding=‘utf-8‘) #如果文件存在會清空文件內容,不存在就新建文件 f.write(‘woyongchun‘) #不換行 f.write(‘woyongchun\n在一起\n‘) #會換行 f.writelines([‘555\n‘,‘5666\n‘]) #寫的參數必須是字符串 f.close() #關閉文件
追加
f = open(‘xxx‘,‘a‘,encoding=‘utf-8‘) #如果文件存在會清空文件內容,不存在就新建文件,追加到文件的追後 f.write(‘wodepanpangchun‘) f.close() #關閉文件
r+
f = open(‘xxx‘,‘r+‘,encoding=‘utf-8‘) #如果文件存在會清空文件內容,不存在就新建文件,追加到文件的追後 data = f.read() print(data) f.write(‘12212‘) #如果沒有read(),直接寫會覆蓋 f.close() #關閉文件
修改文件內容
f = open(‘xxx‘,‘r‘,encoding=‘utf-8‘) #讀出來的內容為一個列表類型,可for循環 data = f.readlines() #存起來 f.close() #關閉文件
dst_f = open(‘xxx‘,‘w‘,encoding=‘utf-8‘) #存到新的文件 dst_f.readlines(data[0]) dst_f.close()
不需要close()寫法
with open(‘a.txt‘,‘w‘,encoding=‘gbk‘) as f: #不需要關閉文件系統自動關閉文件 f.write(‘1111\n‘)
with open(‘a.txt‘,‘r‘) as f,open(‘a.txt‘,‘w‘,encoding=‘gbk‘) as dst_f: #換行方式:\回車
with open(‘a.txt‘,‘r‘) as src_f, open(‘new.txt‘,‘w‘,encoding=‘gbk‘) as dst_f: data = src_f.read() dst_f.write(data)
b的方式讀取
f = open(‘test.py‘,‘rb‘) #以字節的方式不能加編碼格式 data = f.read() #讀取以字符為單位 print(data.decode(‘utf-8‘)) #轉碼
b的方式寫入
f = open(‘a.txt‘,‘wb‘) #以字節的方式不能加編碼格式 data = f.write(bytes(‘11w1\n‘,encoding=‘utf-8‘)) #需要bytes(x,encoding=‘utf-8‘) datas = f.write(‘11w1www\n‘.encode(‘utf-8‘))
b的方式追加
f = open(‘a.txt‘,‘ab‘) #以字節的方式不能加編碼格式 data = f.write(bytes(‘11w1\n‘,encoding=‘utf-8‘)) #需要bytes(x,encoding=‘utf-8‘) datas = f.write(‘11w1www\n‘.encode(‘utf-8‘))
關於編碼問題
f = open(‘a.txt‘,‘r+‘,encoding = ‘utf-8‘,newline=‘‘) print(f.encoding) #獲取編碼格式 f.flush() #刷新文件就會寫入文件 print(f.tell()) #光標目前所在位置 光標移動以字節為單位 f.seek(3,0) #控制光標的移動 f.truncate(10) #以字符微單截取
循環文件,一行一行的循環
f = open(‘x.txt‘,‘rb‘) for i in f: print(i)
seek讀取文件最後一行(原理:倒著讀,不斷增加偏移量)
f = open(‘a.txt‘,‘rb‘) for i in f: offs = -10 while True: f.seek(offs,2) #倒著讀 data = f.readlines() if len(data) > 1: print(data[-1].decode(‘utf-8‘)) break offs *= 2
Python隨心記--文件操作處理 open()