Python 中的檔案開啟和關閉
到目前為止,您一直在讀取和寫入標準輸入和輸出。現在,我們將瞭解如何使用實際的資料檔案。
Python 預設提供處理檔案所需的基本函式和方法。您可以使用檔案物件執行大多數**檔案**操作。
open 函式
在讀取或寫入檔案之前,您必須使用 Python 內建的 open() 函式開啟它。此函式建立一個**檔案**物件,該物件將用於呼叫與其關聯的其他支援方法。
語法
file object = open(file_name [, access_mode][, buffering])
以下是引數詳細資訊 -
- **file_name** - file_name 引數是一個字串值,包含您要訪問的檔案的名稱。
- **access_mode** - access_mode 確定檔案開啟的模式,即讀取、寫入、追加等。下表中給出了所有可能值的完整列表。這是一個可選引數,預設的檔案訪問模式是讀取 (r)。
- **buffering** - 如果 buffering 值設定為 0,則不進行緩衝。如果 buffering 值為 1,則在訪問檔案時執行行緩衝。如果您將 buffering 值指定為大於 1 的整數,則將使用指示的緩衝區大小執行緩衝操作。如果為負,則緩衝區大小為系統預設值(預設行為)。
以下是開啟檔案的不同模式的列表 -
序號 | 模式和描述 |
---|---|
1 | r 僅開啟檔案以進行讀取。檔案指標放置在檔案開頭。這是預設模式。 |
2 | rb 以二進位制格式開啟檔案以僅供讀取。檔案指標放置在檔案開頭。這是預設模式。 |
3 | r+ 開啟檔案以進行讀取和寫入。檔案指標放置在檔案開頭。 |
4 | rb+ 以二進位制格式開啟檔案以進行讀取和寫入。檔案指標放置在檔案開頭。 |
5 | w 僅開啟檔案以進行寫入。如果檔案存在,則覆蓋檔案。如果檔案不存在,則建立一個新檔案以進行寫入。 |
6 | wb 以二進位制格式開啟檔案以僅供寫入。如果檔案存在,則覆蓋檔案。如果檔案不存在,則建立一個新檔案以進行寫入。 |
7 | w+ 開啟檔案以進行寫入和讀取。如果檔案存在,則覆蓋現有檔案。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。 |
8 | wb+ 以二進位制格式開啟檔案以進行寫入和讀取。如果檔案存在,則覆蓋現有檔案。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。 |
9 | a 開啟檔案以進行追加。如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,則建立一個新檔案以進行寫入。 |
10 | ab 以二進位制格式開啟檔案以進行追加。如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,則建立一個新檔案以進行寫入。 |
11 | a+ 開啟檔案以進行追加和讀取。如果檔案存在,則檔案指標位於檔案末尾。檔案以追加模式開啟。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。 |
12 | ab+ 以二進位制格式開啟檔案以進行追加和讀取。如果檔案存在,則檔案指標位於檔案末尾。檔案以追加模式開啟。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。 |
檔案物件屬性
開啟檔案並獲得一個檔案物件後,您可以獲取與該檔案相關的各種資訊。
以下是與檔案物件相關的所有屬性的列表 -
序號 | 模式和描述 |
---|---|
1 | file.closed 如果檔案已關閉,則返回 True,否則返回 False。 |
2 | file.mode 返回開啟檔案時使用的訪問模式。 |
3 | file.name 返回檔名稱。 |
4 | file.softspace 如果 print 需要顯式空格,則返回 False,否則返回 True。 |
示例
#!/usr/bin/python # Open a file fo = open("foo.txt", "wb") print "Name of the file: ", fo.name print "Closed or not : ", fo.closed print "Opening mode : ", fo.mode print "Softspace flag : ", fo.softspace
輸出
這將產生以下結果 -
Name of the file: foo.txt Closed or not : False Opening mode : wb Softspace flag : 0
close() 方法
檔案物件的 close() 方法重新整理任何未寫入的資訊並關閉檔案物件,此後無法再進行寫入。
當檔案的引用物件重新分配給另一個檔案時,Python 會自動關閉檔案。最好使用 close() 方法關閉檔案。
語法
fileObject.close()
示例
#!/usr/bin/python # Open a file fo = open("foo.txt", "wb") print "Name of the file: ", fo.name # Close opend file fo.close()
輸出
這將產生以下結果 -
Name of the file: foo.txt
廣告