python學習筆記(三)
阿新 • • 發佈:2017-07-14
list 內存 寫入 odin move 列表 付出 open ada
f.readlines()#讀取所有文件內容,返回一個list,元素是每行的數據,大文件時不要用,因為會把文件內容都讀到內存中,內存不夠的話,會把內存撐爆
f.tell()#獲取當前文件的指針指向
f.seek(0)#把當前文件指針指向哪
f.write(‘愛情證書‘)#寫入內容
f.fulsh()#寫入文件後,立即從內存中把數據寫到磁盤中
f.truncate()#清空文件內容
f.writelines([‘愛情證書‘,‘孫燕姿‘])#將一個列表寫入文件中
f.close()關閉文件
大文件時,讀取文件高效的操作方法:
用上面的read()和readlines()方法操作文件的話,會先把文件所有內容讀到內存中,這樣的話,內存數據一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從內存中釋放了
文件的操作一般分三步:
1、打開文件,獲取文件的指針(句柄)
2、通過指針(句柄)操作文件
3、關閉文件
現在有以下文件:
我們為愛還在學 學溝通的語言 學著諒解 學著不流淚 等到我們學會飛 飛越黑夜和考驗 日子就要從孤單裏畢業 我們用多一點點的辛苦 來交換多一點點的幸福 就算幸福 還有一段路 等我們學會忍耐和付出 這愛情一定會有張證書
文件的基本操作:
f = open(‘file.txt‘,‘r‘) #以只讀方式打開一個文件,獲取文件句柄,如果是讀的話,r可以不寫,默認就是只讀, 在python2中還有file方法可以打開文件,python3中file方法已經沒有了,只有open frist_line = f.readline()#獲取文件的第一行內容,返回的是一個list print(frist_line)#打印第一行 res = f.read()#讀取所有文件內容 print(res) f.close()#關閉文件
打開文件需要指定文件打開的路徑,以及打開的方式,打開後就可以獲取文件的句柄對文件進行操作
文件的打開模式:
#r模式,默認的模式,讀文件內容,不能寫,並且文件必須存在不存在就報錯
#w寫模式,不能讀,沒有就創建,會先清空文件內容然後重新寫
#a追加模式,只能寫,在文件的末尾添加內容‘+’號表示可以同時讀寫文件
# r +,【可讀、可寫;可追加,如果打開的文件不存在的話,會報錯】
# w +,【寫讀模式,使用w + 的話,已經存在的文件內容會被清空,可以讀到已經寫的文件內容】
# a +,【追加讀寫模式,不存在則創建;存在則只追加內容;】
#總結:只要是讀模式文件必須存在,只要是w模式一定會你先清空文件
"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用)
rU r+U
"b"表示處理二進制文件(如:FTP發送上傳ISO鏡像文件,linux可忽略,windows處理二進制文件時需標註)
rb wb ab
文件的操作方法:
f = open(‘file.txt‘,‘r+‘,encoding=‘utf-8‘)#encoding參數可以指定文件的編碼
f.readline()#讀一行 f.readable()#判斷文件是否可讀 fr.writable()#判斷文件是否可寫 fr.encoding#打印文件的編碼 f.read()#讀取所有內容,大文件時不要用,因為會把文件內容都讀到內存中,內存不夠的話,會把內存撐爆用上面的read()和readlines()方法操作文件的話,會先把文件所有內容讀到內存中,這樣的話,內存數據一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從內存中釋放了
#文件對象也是可以叠代的
# count = 1
# for line in f:
# print(‘第%s行是%s‘%(count,line)) 這樣就是一行一行的讀取文件
# count +=1
修改文件:
修改文件的話,有兩種方式,一種是把文件的全部內容都讀到內存中,然後把原有的文件內容清空,重新寫新的內容;
第二種是把修改後的文件內容寫到一個新的文件中(推薦第二種)
(一)、第一種
f = open(‘b.txt‘,‘a+‘)#f代表的是這個文件的隊形,也叫做句柄
# res = f.read()
# f.seek(0)
# f.truncate()
# new_res = res.replace(‘nnnn‘,‘nono‘)
# f.write(new_res)
# f.close()
或者: with可以在使用完文件後自動關閉文件
# with open(‘b.txt‘,‘w+‘,encoding=‘utf-8‘) as f:
# f.seek(0)
# res = f.read()
# f.seek(0)
# f.truncate()
# new_res = res.replace(‘nnnn‘,‘tttt‘)
# f.write(new_res)
(二、)第二種
import os
# with open(‘b.txt‘,‘r+‘,encoding=‘utf-8‘) as fr , open(‘a.txt‘,‘w‘,encoding=‘utf-8‘) as fw:
# for line in fr:
# new_line = line.replace(‘nono‘,‘tttt‘)
# fw.write(new_line)
# os.remove(‘b.txt‘)
# os.rename(‘a.txt‘,‘b.txt‘)
python學習筆記(三)