1、檔案操作步驟
當我們要讀取或者寫入檔案時,我們需要開啟檔案,在操作完畢時,我們需要關閉檔案,以便釋放和檔案操作相關的系統資源。因此,檔案操作的主要包括以下:
- 開啟檔案。
- 讀寫等操作。
- 關閉檔案。
注意:可以只開啟和關閉檔案,不進行任何讀寫操作。
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+ |
以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。 |
說明:
- 主要的三種開啟模式為
r
、w
、a
。
- 凡事帶
+
都是可讀可寫模式。- 凡事帶
b
的都是以二進位制格式開啟檔案。- 所有的訪問模式的基礎特點都要遵循三種豬訪問模式
r
、w
、a
。x
模式
x
模式用來新建檔案,如果檔案不存在則建立,存在則報錯。
如果想建立一個檔案,不想覆蓋已有的檔案,就可以選擇這個操作檔案的方式。b
和t
t
是以純文字方式開啟檔案,預設就是t
。b
是以二進位制方式開啟檔案。
關於開啟檔案模式的官方文件,在[The Python Standard Library] —> [Built-in Functions] —> 內建方法列表中選擇[open()]。
文件內容如下圖所示:
(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_obj
是open( )
函式返回的檔案物件。
只要沒有報錯,就證明檔案開啟了。
當我們獲取了檔案物件以後,所有的對檔案的操作都應該通過物件來進行。
(4)關於檔案路徑
- 如果目標檔案和當前檔案在同一級目錄下,則直接使用檔名即可。
- 可以使用
..
來返回一級目錄,也就是上一級目錄。 - 在windows系統使用路徑時,可以使用
/
來代替\
,在Python中會自動轉換,
或者可以使用\\
來代替\
,
或者也可以使用原始字串,如file_name = r'hello\demo.txt'
。
也就是在字串前面加上一個小寫的r
,是字串原樣輸出,不加任何轉義。 - 如果目標檔案距離當前檔案比較遠,此時可以使用絕對路徑。
絕對路徑應該從磁碟的根目錄開始書寫,如file_name = r'C:\Users\123\Desktop\hello.txt'