檔案讀寫操作

2021-10-03 04:47:30 字數 3199 閱讀 7084

定義在記憶體中存在資料交換的操作認為是io操作,比如和終端互動,和磁碟互動,和網路互動等。

程式的分類

在python3中引入位元組串的概念,與str不同,位元組串以位元組序列值表達資料,更方便用來處理二進位制資料。因此在python3中位元組串是常見的二進位制資料展現方式。

對檔案實現讀寫的基本操作步驟為:開啟檔案,讀寫檔案,關閉檔案

開啟檔案

file_object = open(file_name, access_mode=『r』, buffering=-1)

buffering——引數0表示無緩衝(直接寫入磁碟中),1表示行緩衝(遇到換行符\n自動重新整理緩衝區,寫入磁碟中),如果大於1表示直接指明緩衝區大小。如果不寫或者為負數表示使用系統預設緩衝(採用系統預設快取需要緩衝區滿後才能自動寫入磁碟)。

緩衝:系統自動的在記憶體中為每乙個正在使用的檔案開闢乙個緩衝區,從記憶體向磁碟輸出資料必須先送到記憶體緩衝區,裝滿緩衝區再一起送到磁碟中去。從磁碟中讀資料,則一次從磁碟檔案將一批資料讀入到記憶體緩衝區中,然後再從緩衝區逐個的將資料送到程式的資料區。

緩衝區:減少和磁碟的互動次數,提高磁碟讀寫效率。

注意:無論什麼緩衝,當程式結束或者檔案被關閉時都會將緩衝區內容寫入磁碟。

讀取檔案

file_object.read([size])

用來直接讀取位元組到字串中,最多讀取給定數目個位元組。如果沒有給定size

引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾。檔案過大時建議在non-blocking模式下使用。

file_object.readline([size])

讀取開啟檔案的一行(讀取下個行結束符之前的所有位元組)。然後整行,包括行結束符,作為字串返回。和read()相同,它也有乙個可選的size引數,預設為-1,代表讀至行結束符。如果提供了該引數,那麼在超過size個位元組後會返回不完整的行(一直到換行符結尾)。

file_object.readlines([sizeint])

該方法並不像其它兩個輸入方法一樣返回乙個字串。它會讀取所有(剩餘的)行然後把它們作為乙個字串列表返回。它的可選引數sizhint代表返回的最大位元組大小。

檔案物件本身也是乙個迭代器,在for迴圈中可以迭代檔案的每一行。

for line in f:

print

(line)

寫入檔案

file_object.write(string)

功能與read()和readline()相反。它把含有文字資料或二進位制資料塊的字串寫入到檔案中去。

file_object.writelines(str_list)

和readlines()一樣,writelines()方法是針對列表的操作,它接受乙個字串列表作為引數,將它們寫入檔案。行結束符並不會被自動加入,如果需要的話,必須在調動writelines()前給每行結尾加上行結束符。

關閉檔案

開啟乙個檔案後我們就可以通過檔案物件對檔案進行操作了,當操作結束使用close()關閉這個物件可以防止一些誤操作,也可以節省資源。

file_object.close()

with操作

python中的with語句使用於對資源進行訪問的場合,保證不管處理過程中是否發生錯誤或者異常都會執行規定的「清理」操作,釋放被訪問的資源,比如有檔案讀寫後自動關閉、執行緒中鎖的自動獲取和釋放等。

with語句的語法格式如下:

with context_expression [

as target(s)]:

with

-body

比如:with

open

('file.txt'

,'r+'

)as f:

f.read().

..

通過with方法可以不用close(),因為with生成的物件在語句塊結束後會自動處理,所以不需要close(),但是這個檔案物件只能在with語句塊內使用。

file_object.flush()

該函式呼叫後會進行一次磁碟互動,將緩衝區中的內容寫入到磁碟中。通過呼叫flush()可以人為重新整理緩衝

定義開啟乙個檔案進行操作時系統會自動生成乙個記錄,記錄中描述了我們對檔案的一系列操作。其中包括每次操作到的檔案的位置。檔案的讀寫操作都是從這個位置開始進行的。檔案偏移量代表檔案的當前讀寫操作位置,隨讀寫操作移動。(r,w方式開啟檔案此時偏移量在開頭,以a方式開啟此時偏移量在末尾)

基本操作

f.tell()

功能:獲取檔案偏移量

f.seek(offset[,whence])

功能:移動檔案偏移量位置

引數:offset位元組代表相對於某個位置的偏移量。可以是負數表示向前移動。whence是基準位置的預設值為0,代表從檔案開頭算起,1代表從當前位置算起,2代表從檔案末尾算起。

定義系統中每乙個io操作都會分配乙個整數作為編號(不會相同),該整數即這個io操作的檔案描述符。

獲取檔案描述符

f.fileno()

通過io物件獲取對應的檔案描述符。

【前提】import os

獲取檔案大小

os.path.getsize(file)

檢視檔案列表

os.listdir(dir)

檢視檔案是否存在

os.path.exists(file)

判斷檔案型別

os.path.isfile(file)判斷是否是普通檔案 / os.path.isdir(file)判斷資料夾

刪除檔案

os.remove(file)

檔案操作 讀寫檔案

對檔案的讀寫操作應該是最重要的檔案操作,system.io命名空間提供了諸多檔案讀寫操作類,對檔案內容進行操作常見有3種方式 文字模式 二進位制模式以及非同步模式。1 文字模式 streamreader 和streamwriter類提供了按文字模式讀寫資料的方法。1.1 streamreader 類...

讀寫檔案操作

匯入領導簡歷資訊 return public string leaderresumeimport throws ioexceptionelse if fr null fr.close if flag else fw.close string sjson outputclient sjson retu...

檔案讀寫操作

函式原型 file fopen const char filename,const char mode 返回值 檔案順利開啟後,指向該流的檔案指標就會被返回。如果檔案開啟失敗則返回null,並把錯誤 存在errno中 引數 mode 說明 r read,已唯讀方式開啟檔案,檔案必須存在 w writ...