Python 讀取文件 | 如何在 Python 中打開、讀取和寫入文件
在使用任何編程語言時,讀取和寫入文件是一種常見的操作。您可以對代碼進行編程以從文件中讀取數據或指令,然后再寫入數據。這提高了效率并減少了人工。
Python 有一個定義明確的方法來打開、讀取和寫入文件。Python 中文件操作的一些應用程序包括:讀取數據以進行算法訓練和測試、讀取文件以創建生成藝術、報告和讀取配置文件。 ?
在本教程中,您將學習:
- 如何將文件加載到主內存并創建文件句柄。
- 如何使用文件句柄打開文件進行讀寫。
- 處理文件時的異常處理。
先決條件:
- 確保您安裝了最新的 Python 版本。
- 熟悉您選擇的任何 Python 支持的文本編輯器。
- 熟悉基本的 Python 語法。
要快速訪問 Python IDE,請查看Replit。你也可以克隆這個repo 并在 Replit 上運行它。
持久性以及如何將文件加載到主內存中
文件駐留在計算機的輔助內存中。輔助內存是持久的,這意味著當計算機斷電時數據不會被擦除。對文件進行更改并保存后,更改將永久寫入并保存在輔助存儲器中。
要處理文件,我們需要先將它們加載到主內存中。主內存是臨時緩存內存,用于在短時間內保存請求的數據。計算機斷電時數據丟失。
Python 通過“文件處理程序”與加載到主內存中的文件進行交互。讓我們詳細看看文件處理程序。
文件處理程序如何工作
當我們要讀取或寫入文件時,我們必須先打開它。打開文件向操作系統發出信號,以按文件名搜索文件并確保其存在。
如果打開成功,操作系統將返回一個文件處理程序。然后我們可以通過文件處理程序與我們的文件進行交互。
文件處理程序不包含數據本身,它只是提供一個處理文件操作的接口。
如何打開文件
在本例中,我們將打開文件daffodils.txt
.?請注意,此文件應存儲在與 Python 程序相同的文件夾中。daffodils.txt
您可以從此GitHub 鏈接下載該文件。
請看一下該文件,因為我們將在接下來的示例中使用它的內容。
例子:
fhand = open('daffodils.txt')
print(fhand)
fhand
在上面的示例中,如果打開成功,操作系統將返回變量中的文件句柄。默認情況下,您只能讀取文件。
輸出:
在輸出中,我們收到了一個文件句柄,其中name
是文件名和mode
權限,在我們的例子中是r
(代表read
)。encoding
是 Unicode 字符集的編碼機制。您可以在此處了解有關 UTF-8 的更多詳細信息。
例外:
如果文件不存在,我們會得到如下異常:
如何打印文件
現在我們有了文件句柄,這意味著我們可以訪問該文件。讓我們打印文件并查看其內容。
例子:
# Get the file handler
fhand = open('daffodils.txt')
# Loop through each line via file handler
for line in fhand:
print(line)
輸出:
我們能夠成功訪問和打印文件。但是,您是否注意到我們在每行之間出現了額外的空白行?對此有一個解釋。讓我們在下一節中看到。
如何處理額外的行空間
換行符在 Python 中由 表示n
。當放置在字符串中的任何位置時,此字符會添加一個新行。
每行末尾都有一個換行符,用于將輸出打印到下一行。我們可以使用該repr
方法對其進行可視化。
根據 Python文檔,該repr()
方法返回一個包含對象可打印表示的字符串。這意味著我們可以看到t or a n
出現在字符串中的任何特殊字符,例如 a。 ?
讓我們在下面運行一個示例并查看輸出。
例子:
回到我們的文件,我們可以repr()
用來檢查特殊字符。
# Get the file handler
fhand = open('daffodils.txt')
# Loop through each line via file handler
for line in fhand:
print(repr(line))
輸出:
此外,print 方法默認添加一個新行。這意味著使用 print,我們將在輸出中獲得另一個新行。我們可以使用兩種方法來處理這個額外的行。
方法 #1:更改 print 的默認結束值
下面的代碼片段顯示了該print
函數的參數。我們可以看到默認情況下 的end
值為n
。這意味著每個打印語句都以n
.