大檔案讀寫
1) 檔案讀取方式
read()將文字檔案所有行讀到一個字串中。
readline()是一行一行的讀
readlines()是將文字檔案中所有行讀到一個list中,文字檔案每一行是list的一個元素。優點:readline()可以在讀行過程中跳過特定行。
2)大檔案讀取方式1:分塊讀取
將大檔案分割成若干小檔案處理,處理完每個小檔案後釋放該部分記憶體。這裡用了iter 和 yield
def read_in_chunks(filePath, chunk_size=1024*1024):
file_object = open(filePath)
while True:
chunk_data = file_object.read(chunk_size)
if not chunk_data:
break
yield chunk_data
if __name__ == "__main__":
filePath = './path/filename'
for chunk in read_in_chunks(filePath):
process(chunk) # <do something with chunk>
3)大檔案讀取方式2:for line in f
l with語句開啟和關閉檔案,包括丟擲一個內部塊異常。
l for line in f檔案物件f視為一個迭代器,會自動的採用緩衝IO和記憶體管理,所以你不必擔心大檔案。
with open(...) as f:
for line in f:
process(line) # <do something with line>
4)二進位制檔案讀寫
對於文字資料,可以直接以“r”形式讀寫,但對於圖片,音樂等等,這些東西都是有規則的二進位制檔案,讀取方式是“rb”。