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 的整數,則將使用指示的緩衝區大小執行緩衝操作。如果為負,則緩衝區大小為系統預設值(預設行為)。

以下是開啟檔案的不同模式的列表 -

序號模式和描述
1r
僅開啟檔案以進行讀取。檔案指標放置在檔案開頭。這是預設模式。
2rb
以二進位制格式開啟檔案以僅供讀取。檔案指標放置在檔案開頭。這是預設模式。
3r+
開啟檔案以進行讀取和寫入。檔案指標放置在檔案開頭。
4rb+
以二進位制格式開啟檔案以進行讀取和寫入。檔案指標放置在檔案開頭。
5w
僅開啟檔案以進行寫入。如果檔案存在,則覆蓋檔案。如果檔案不存在,則建立一個新檔案以進行寫入。
6wb
以二進位制格式開啟檔案以僅供寫入。如果檔案存在,則覆蓋檔案。如果檔案不存在,則建立一個新檔案以進行寫入。
7w+
開啟檔案以進行寫入和讀取。如果檔案存在,則覆蓋現有檔案。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。
8wb+
以二進位制格式開啟檔案以進行寫入和讀取。如果檔案存在,則覆蓋現有檔案。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。
9a
開啟檔案以進行追加。如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,則建立一個新檔案以進行寫入。
10ab
以二進位制格式開啟檔案以進行追加。如果檔案存在,則檔案指標位於檔案末尾。也就是說,檔案處於追加模式。如果檔案不存在,則建立一個新檔案以進行寫入。
11a+
開啟檔案以進行追加和讀取。如果檔案存在,則檔案指標位於檔案末尾。檔案以追加模式開啟。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。
12ab+
以二進位制格式開啟檔案以進行追加和讀取。如果檔案存在,則檔案指標位於檔案末尾。檔案以追加模式開啟。如果檔案不存在,則建立一個新檔案以進行讀取和寫入。

檔案物件屬性

開啟檔案並獲得一個檔案物件後,您可以獲取與該檔案相關的各種資訊。

以下是與檔案物件相關的所有屬性的列表 -

序號模式和描述
1file.closed
如果檔案已關閉,則返回 True,否則返回 False。
2file.mode
返回開啟檔案時使用的訪問模式。
3file.name
返回檔名稱。
4file.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

更新時間: 2020-01-30

10K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告