Python筆記 檔案

2021-10-02 17:51:29 字數 4351 閱讀 3463

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

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

開啟檔案

file_object =

open

(file_name, access_mode=

'r', buffering=-1

)

功能:開啟乙個檔案,返回乙個檔案物件。

引數:file_name 檔名;

access_mode 開啟檔案的方式,如果不寫預設為『r』

操作access_modes_mode

開啟檔案的方式,如果不寫預設為『r』

r以讀方式開啟 檔案必須存在

w以寫方式開啟,檔案不存在則建立,存在清空原有內容

a以追加模式開啟

rb以二進位制讀模式開啟 同r

wb以二進位制寫模式開啟 同w

ab以二進位制追加模式開啟 同a

rb+以二進位制讀寫模式開啟 同r+

wb+以二進位制讀寫模式開啟 同w+

ab+以二進位制讀寫模式開啟 同a+

buffering 1表示有行緩衝,預設則表示使用系統預設提供的緩衝機制。

返回值:成功返回檔案操作物件。

"""

open函式例項

"""# f = open("../file", "r")

# f = open("../file", "w")

f =open

("../file"

,"a"

)print

(f)f.close(

)

讀取檔案

read([size])

功能: 來直接讀取檔案中字元。

引數: 如果沒有給定size引數(預設值為-1)或者size值為負,檔案將被讀取直至末尾,給定size

最多讀取給定數目個字元(位元組)。

返回值: 返回讀取到的內容

"""

read函式例項

"""f =

open

("file"

,"r"

)# while true:

# date = f.read(4)

# if not date:

# break

# print(date)

date = f.readline(

)date.split(

)print

(date)

# date = f.readline(10)

# print(date)

# date=f.readlines(6)

# print(date)

f.close(

)

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

for line in f:

print

(line)

寫入檔案

write(string)

功能: 把文字資料或二進位制資料塊的字串寫入到檔案中去

引數:要寫入的內容

返回值:寫入的字元個數

f =

open

("file"

,"a"

)f.write(

"s\n"

)a = f.write(

"s")

print

(a)f.close(

)

關閉檔案

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

file_object.close(

)

with操作

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

with語句的語法格式如下:

with context_expression [

as obj]

:with

-body

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

with

open

('file'

,'r+'

)as f:

f.read(

)

注意

加b的開啟方式讀寫要求必須都是位元組串

無論什麼檔案都可以使用二進位制方式開啟,但是二進位制檔案使用文字方式開啟讀寫會出

錯重新整理緩衝區

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

重新整理緩衝區條件:

緩衝區被寫滿

程式執行結束或者檔案物件被關閉

行緩衝遇到換行

程式中呼叫flush()函式

flush()

該函式呼叫後會進行一次磁碟互動,將緩衝區中的內容寫入到磁碟。

# f = open('file','w')

# f = open("file",'w',1) # 1 行緩衝,遇到\n會重新整理緩衝區

f =open

("file"

,'wb',10

)# >1 指明緩衝區大小 (二進位制方式)

while

true

: data =

input

(">>")if

not data:

break

f.write(b"hello world"

)# f.flush() # 重新整理緩衝區

f.close(

)

檔案偏移量

定義開啟乙個檔案進行操作時系統會自動生成乙個記錄,記錄中描述了我們對檔案的一系列操作,其中包括每次操作到的檔案位置。檔案的讀寫操作都是從這個位置開始進行的。

基本操作

tell()

功能:獲取檔案偏移量大小

seek(offset[,whence])

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

引數:offset 代表相對於某個位置移動的位元組數。負數表示向前移動,正數表示向後移動。

whence是基準位置的預設值為 0,代表從檔案開頭算起,1代表從當前位置算起,2 代表從檔案末尾算起。

"""

空洞檔案

"""f =

open

("皮卡丘"

,'wb'

)f.write(b'begin'

)f.seek(

1024,2

)f.write(b'end'

)f.close(

)"""

seek.py 檔案偏移量展示

open 檔案偏移量初始化

r w 開啟檔案偏移量在開頭

a 開啟檔案偏移量在結尾

"""f =

open

('file'

,'wb+'

)f.write(

"春天來了"

.encode())

f.flush(

)print

("當前檔案偏移量位置:"

,f.tell())

f.seek(-6

,2)# 以開頭為基準,向後移動0 位元組

data = f.read(

)print

(data.decode())

f.close(

)

檔案描述符

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

獲取檔案描述符

fileno()

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

常用檔案操作函式

獲取檔案大小

os.path.getsize(file)

檢視檔案列表

os.listdir(dir)

檢視檔案是否存在

os.path.exists(file)

判斷檔案型別

os.path.isfile(file)

刪除檔案

os.remove(file)

Python複習筆記 檔案

open filename,mode mode 唯讀 r 只寫 w 追加 a 讀寫 r 二進位制讀 rb,wb,ab,r b read 讀全部檔案 read size 讀size個位元組 readline 讀開始一行 readlines 讀所有行到乙個list write string 寫入字串,非...

Python學習筆記 檔案

3 檔案 目錄的常用管理操作 計算機的檔案,就是儲存在某種 長期儲存裝置 上的一段資料 在計算機中,檔案是以二進位制的方式儲存在磁碟上的 在 計算機 中要操作檔案的套路非常固定,一共包含三個步驟 1.開啟檔案 2.讀 寫檔案 3.關閉檔案 python中操作檔案有 乙個函式和三個方法 open 函式...

python筆記 檔案操作

檔案操作 好記性不如爛筆頭,學習從摘抄開始!1.純文字檔案的讀和寫 r read w writerb read binary wb write binary3.追加模式 1.open filepath,mode 1 第乙個引數是檔案的路徑 2 第乙個引數是開啟的模式,讀取模式 mode r 或 mo...