『無為則無心』Python基礎 — 41、Python中檔案的讀寫操作(一)

繁華似錦Fighting發表於2022-01-27

1、檔案操作步驟

當我們要讀取或者寫入檔案時,我們需要開啟檔案,在操作完畢時,我們需要關閉檔案,以便釋放和檔案操作相關的系統資源。因此,檔案操作的主要包括以下:

  1. 開啟檔案。
  2. 讀寫等操作。
  3. 關閉檔案。

注意:可以只開啟和關閉檔案,不進行任何讀寫操作。

2、檔案的讀寫操作

(1)檔案的開啟

在Python中,使用open( )函式,可以開啟一個已經存在的檔案,或者建立一個新檔案,語法如下:

# 文件中語法如下
open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)

# 我們可以看到這個open( )函式有很多的引數
# 但是我們也可以看到處了第一個引數,其他的都是關鍵字引數
# 也就是說,除了第一個必填,其他的都可以不填寫。
# 但是我們在實際開發中,比較常用的就是前兩個選項。

open(name, mode)
  • name:是要開啟的目標檔名的字串(可以包含檔案所在的具體路徑)。
  • mode:設定開啟檔案的模式(訪問模式),只讀、寫入、追加等。

(2)開啟檔案模式

在Python中,檔案的開啟模式如下表:

模式 描述
r 以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭(相當於游標所在的位置)。這是預設模式。
rb 以二進位制格式開啟一個檔案用於只讀。檔案指標將會放在檔案的開頭。這是預設模式。
r+ 開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
rb+ 以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
w 開啟一個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。(檔案指標在開頭,覆蓋檔案)
wb 以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。
w+ 開啟一個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。
wb+ 以二進位制格式開啟一個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。
a 開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。(檔案指標在內容的結尾處,方便追加內容)
ab 以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
a+ 開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。
ab+ 以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。

說明:

  • 主要的三種開啟模式為rwa
    • 凡事帶+都是可讀可寫模式。
    • 凡事帶b的都是以二進位制格式開啟檔案。
    • 所有的訪問模式的基礎特點都要遵循三種豬訪問模式rwa
  • x 模式
    x 模式用來新建檔案,如果檔案不存在則建立,存在則報錯。
    如果想建立一個檔案,不想覆蓋已有的檔案,就可以選擇這個操作檔案的方式。
  • bt
    • t是以純文字方式開啟檔案,預設就是t
    • b是以二進位制方式開啟檔案。

關於開啟檔案模式的官方文件,在[The Python Standard Library] —> [Built-in Functions] —> 內建方法列表中選擇[open()]

文件內容如下圖所示:

image

(3)獲取一個檔案物件

也就是開啟一個檔案。

# open()函式返回一個物件,這個物件就代表了當前開啟的檔案。
# file_obj是一個檔案物件,檔案開啟狀態
file_name= 'test.txt'
file_obj = open(file_name, 'r')

# <class '_io.TextIOWrapper'>
print(type(file_obj)) 
# <_io.TextIOWrapper name='test.txt' mode='r' encoding='cp936'>
print(file_obj)

注意:此時的file_objopen( )函式返回的檔案物件。

只要沒有報錯,就證明檔案開啟了。

當我們獲取了檔案物件以後,所有的對檔案的操作都應該通過物件來進行。

(4)關於檔案路徑

  • 如果目標檔案和當前檔案在同一級目錄下,則直接使用檔名即可。
  • 可以使用..來返回一級目錄,也就是上一級目錄。
  • 在windows系統使用路徑時,可以使用/來代替\,在Python中會自動轉換,
    或者可以使用 \\ 來代替 \
    或者也可以使用原始字串,如file_name = r'hello\demo.txt'
    也就是在字串前面加上一個小寫的r,是字串原樣輸出,不加任何轉義。
  • 如果目標檔案距離當前檔案比較遠,此時可以使用絕對路徑。
    絕對路徑應該從磁碟的根目錄開始書寫,如file_name = r'C:\Users\123\Desktop\hello.txt'

相關文章