標籤:不用 寫入 with 列操作 自己 rip file 方法 技術分享
1,python讀取檔案
2,python寫檔案
3,python操作檔案的常用方法
1,python讀取普通檔案(檔案名稱為text.txt)
f = open(‘test.txt‘,‘r‘)data = f.read()print data
f.close()
這樣就能完成檔案的讀取。預設情況下開啟檔案是讀的,所以如果你是讀取檔案,可以不用寫‘r‘,當然這裡可以寫成mode=‘r‘.
考慮到如果檔案是非常大的話,比如1個G的檔案,如果你直接使用read方法。這樣會非常佔用伺服器的記憶體,這樣就不太好。所以這個時候就可以考慮xreadlines。它不是一次性將內容載入的記憶體中。
只有等你使用到具體的行,才會載入的記憶體中。這與前面的range和xrange的原理是樣的。於是乎代碼更改如下:
f = open(‘test.txt‘,‘r‘)data = f.read()print data
f.close()
這裡的open其實是可以用file來代替的,意思是一樣的。從上面的代碼發現,開啟檔案後經過一系列操作需要f.close()將檔案關閉。關閉的原因是:如果不關閉檔案的話,就會佔用系統的描述符,而作業系統的描述符是有限制的。當然,python的回收機制也是處理這個問題。但是畢竟自動關閉是最佳的選擇。但是每次f.close比較麻煩,所以引用with open的方式,它會自動幫我們執行f.close()函數。
with open(‘test.txt‘,‘r‘) as f: for line in f.xreadliens(): print line.strip()
上述的操作都是針對普通檔案的操作,如果需要操作二進位檔案的話,操作檔案的mode需要改為‘rb’或者‘wb’。具體可以參考如:
2,python寫檔案
with open(‘test.txt‘,‘w‘) as f: f.write(‘this is test‘)
這樣就完成基本的檔案寫操作,但是我們這裡的模式是w,那麼意味著原先的內容都被清空了,在清空檔案內容的前提條件下,新增加的內容。
如果你不想要原檔案的內容被清空,那麼你就需要將模式改為追加模式,即‘a‘.
with open (‘test.txt‘,‘a‘) as f: f.write(‘this is test‘)
3,python操作檔案的常用方法
讀模式:
read() 一次性將內容全部讀取出來
readline() 讀取檔案的一行,比如開啟檔案後,執行f.readline()則表示讀取檔案的第一行,再次操作,讀取檔案的第二行
readlines() 讀取檔案的所有行,以列表的形式返回
xreadlines() 讀取檔案的行,返回對象,即產生器,需要使用for迴圈遍曆
next() 讀取檔案的下一行
seek() 指定檔案指標跳到那個位置,一般用於讓指標跳到起始行開頭的位置。即f.seek(0)
tell() 返回指標所在的位置
寫入模式:
wirte() 將內容一次性寫入到檔案中
writelines() 檔案寫入一個序列字串列表,如果需要換行則要自己加入每行的分行符號
flush() 將修改重新整理到磁碟上,一般情況下,你這邊f.write寫入內容。但是你沒有f.close時,你寫入檔案的內容是暫時的緩衝在記憶體的。除非你f.close()才會將檔案刷到磁碟中,或者你使用f.flush()這個命令將內容重新整理到磁碟上
close() 關閉檔案
python操作檔案