標籤:coding readline bin 讀取 並且 filename 清空 大檔案讀取 指定
讀
open開啟檔案後一定要記得調用檔案對象的close()方法,用try/finally語句來確保最後能關閉檔案
不能把open語句放在try塊裡,因為當開啟檔案出現異常時,檔案對象file_object無法執行close()方法
file_name = open(‘test.file‘)
讀取所有內容
file_object = open(‘thefile.txt‘)
try:
all_the_text = file_object.read( )
finally:
file_object.close( )
讀固定位元組
file_object = open(‘abinfile‘, ‘rb‘)
try:
while True:
chunk = file_object.read(100)
if not chunk:
break
do_something_with(chunk)
finally:
file_object.close( )
讀取每行
list_of_all_the_lines = file_object.readlines( )
list_of_one_the_line = file_object.readline( )
寫
output = open(‘data‘, ‘w‘) wb w+
file_object.writelines(list_of_text_strings) 寫入多行
3.清空檔案內容
file = open(‘test.log‘,‘w‘)
file.truncate() 清空檔案內容
檔案讀寫使用with..as 方式
如果檔案很小,read()一次性讀取最方便;如果不能確定檔案大小,反覆調用read(size)比較保險;如果是設定檔,調用readlines()最方便
f = open(‘/Users/michael/gbk.txt‘, ‘r‘, encoding=‘gbk‘, errors=‘ignore‘) encoding 指定讀取檔案的編碼
linecache,這個模組也可以解決大檔案讀取的問題,並且可以指定讀取哪一行
面對百萬行的大型資料使用with open 是沒有問題的,但是這裡面參數的不同也會導致不同的效率。經過測試發先參數為"rb"時的效率是"r"的6倍
linecache 用以實現高效讀取大檔案內容或者需要經常訪問的檔案,linecache先把檔案一次性讀入到緩衝中,在以後訪問檔案的時候,就不必要再從硬碟讀取
lines = linecache.getlines(filename) 得到行列表,然後進行遍曆讀取
line = linecache.getline(filename,linenum) 讀取指定行
file() 函數用於建立一個 file 對象,它有一個別名叫 open()
import cPickle as p 利用cPickle模組進行檔案的儲存讀取
f = file(shoplistfile, ‘w‘) p.dump(shoplist, f) f.close() dump資料到檔案
f = file(shoplistfile) storedlist = p.load(f) print storedlist load 資料從檔案
不能把open語句放在try塊裡,因為當開啟檔案出現異常時,檔案對象file_object無法執行close()方法
F.read([size]) #size為讀取的長度,以byte為單位
F.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分
F.readlines([size]) #把檔案每一行作為一個list的一個成員,並返回這個list。其實它的內部是通過迴圈調用readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分。
F.write(str) #把str寫到檔案中,write()並不會在str後加上一個分行符號
F.writelines(seq) #把seq的內容全部寫到檔案中。這個函數也只是忠實地寫入,不會在每行後面加上任何東西
用w或a模式開啟檔案的話,如果檔案不存在,那麼就自動建立。用w模式開啟一個已經存在的檔案時,原有檔案的內容會被清空,因為一開始檔案的操作的標記是在檔案的開頭的,這時候進行寫操作,無疑會把原有的內容給抹掉
用U模式開啟檔案,就是支援所有的換行模式
F.tell() #返迴文件操作標記的當前位置,以檔案的開頭為原點
F.seek(offset[,whence]) #將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。
python 檔案讀寫操作