python3基礎筆記(四)檔案處理

2022-08-16 16:18:12 字數 4016 閱讀 3483

必須先用python內建的open()函式開啟乙個檔案,建立乙個file物件,相關的方法才可以呼叫它進行讀寫。

語法:

file object = open(file, mode='r', buffering=none, encoding=none, errors=none, newline=none, closefd=true)
各個引數的細節如下:

不同模式開啟檔案的完全列表:

模式描述

r以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。

rbr+

開啟乙個檔案用於讀寫。檔案指標將會放在檔案的開頭。

rb+w

開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

wbw+

開啟乙個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。

wb+a

開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

ab以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。

a+開啟乙個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。

ab+以二進位制格式開啟乙個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

下圖總結了這幾種模式:

模式rr+ww+a

a+讀√√

√√寫√

√√√√

建立√√√

√覆蓋√√

指標在開始√√

√√指標在結尾√√

乙個檔案被開啟後,你有乙個file物件,你可以得到有關該檔案的各種資訊。

屬性描述

file.closed

返回true如果檔案已被關閉,否則返回false。

file.mode

返回被開啟檔案的訪問模式。

file.name

返回檔案的名稱。

file.encoding

返回開啟檔案時的編碼

如下例項:

f = open("test.txt", "w")

print("檔名: ", f.name)

print("是否已關閉 : ", f.closed)

print("訪問模式 : ", f.mode)

print("檔案編碼: ", f.encoding) # 開啟檔案時候不指定預設與作業系統有關

輸出:

檔名:  test.txt

是否已關閉 : false

訪問模式 : w

檔案編碼: cp936

file 物件的 close()方法重新整理緩衝區裡任何還沒寫入的資訊,並關閉該檔案,這之後便不能再進行寫入。

當乙個檔案物件的引用被重新指定給另乙個檔案時,python 會關閉之前的檔案。用 close()方法關閉檔案是乙個很好的習慣。

語法:

file.close()
例子:

# 開啟乙個檔案

f = open("test.txt", "w")

print("檔名: ", f.name)

print("是否已關閉 : ", f.closed)

print("訪問模式 : ", f.mode)

print("檔案編碼: ", f.encoding) # 開啟檔案時候不指定預設與作業系統有關

f.close() # 關閉檔案

print("是否已關閉 : ", f.closed)

輸出:

檔名:  test.txt

是否已關閉 : false

訪問模式 : w

檔案編碼: cp936

是否已關閉 : true

讀寫檔案:

write()方法可將任何字串寫入乙個開啟的檔案。需要重點注意的是,python字串可以是二進位制資料,而不是僅僅是文字。

write()方法不會在字串的結尾新增換行符('\n'):

write方法寫入檔案後返回寫入檔案的位元組數

語法:

file.write(string)
在這裡,被傳遞的引數是要寫入到已開啟檔案的內容。

例子:

# 開啟乙個檔案

f = open("test.txt", "w")

size = f.write("hello world\n") # 把字串寫入到檔案

# 關閉開啟的檔案

print(size) # 此處輸出 12

f.close()

此是會建立乙個名為test.txt的檔案開啟test.txt即可看到寫入的內容

read()方法從乙個開啟的檔案中讀取乙個字串。需要重點注意的是,python字串可以是二進位制資料,而不是僅僅是文字。

read()方法讀的是字元 file的其他所有方法都是讀的位元組

語法:

file.read([count])
在這裡,被傳遞的引數是要從已開啟檔案中讀取的位元組計數。該方法從檔案的開頭開始讀入,如果沒有傳入count,它會嘗試盡可能多地讀取更多的內容,很可能是直到檔案的末尾。

例子:這裡我們用到以上建立的 test.txt 檔案。

# 開啟乙個檔案

f = open("test.txt", "r+")

str = f.read(5)

print(str)

str = f.read(5)

print(str)

# 關閉開啟的檔案

f.close()

輸出:

hello

worl

將寫入的結果立即寫入到檔案。

語法:

file.flush()
檔案的擷取,屬於寫方式。但不能使用w+模式(w+模式會把檔案內容清空)

語法:

file.truncate(count)
count為擷取的檔案位元組數

例如:

f = open("test.txt", "r+")

f.truncate(3) # 擷取檔案前三個字元

f.close()

此時開啟test.txt會看到:

hel
tell()方法告訴你檔案內的當前位置, 換句話說,下一次的讀寫會發生在檔案開頭這麼多位元組之後。

seek(offset [,from])方法改變當前檔案的位置。offset變數表示要移動的位元組數。from變數指定開始移動位元組的參考位置。

如果from被設為0,這意味著將檔案的開頭作為移動位元組的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那麼該檔案的末尾將作為參考位置。

seek 與 tell  都是按位元組讀。

例子:就用我們上面建立的檔案test.txt。

# 開啟乙個檔案

f = open("test.txt", "r+")

str = f.read(5)

print(str)

# 查詢當前位置

position = f.tell()

print("當前檔案位置 : ", position)

# 把指標再次重新定位到檔案開頭

position = f.seek(0, 0)

str = f.read(10)

print(str)

# 關閉開啟的檔案

f.close()

輸出:

hello

當前檔案位置 : 5hello worl

python 3讀取檔案 Python3 檔案讀寫

python open 方法用於開啟乙個檔案,並返回檔案物件,在對檔案進行處理過程都需要使用到這個函式 1.讀取檔案 with open test json dumps.txt mode r encoding utf 8 as f seek 移動游標至指定位置 f.seek 0 read 讀取整個檔...

python 3 檔案管理

import os,tempfile,glob,shutil 建立目錄 os.mkdir r home rain test filedir 建立目錄以及所有path中包含的上級目錄 os.makedirs r home rain test test filedir 切換當前工作目錄 os.chdir...

python3 檔案處理

python open 方法用於開啟乙個檔案,並返回檔案物件,在對檔案進行處理過程都需要使用到這個函式,如果該檔案無法被開啟,會丟擲 oserror。注意 使用 open 方法一定要保證關閉檔案物件,即呼叫 close 方法。open 函式常用形式是接收兩個引數 檔名 file 和模式 mode o...