2.1 讀取整個文件
在 Python 中有幾種方法可以讀取文本文件。每種方法都有其優勢,適合於不同的情況。讀取文本文件的主要方法有:讀取整個內容、按行讀取、指定字符數讀取等等。
方法 read()
會將文件的所有內容讀取到一個字符串中。
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
這是一種非常簡單的讀取文件的方法——只需調用一次方法,文件的所有內容就會在一個字符串中。不過這種方法也有缺點——如果文件包含例如200 MB的日誌,那麼讀取會很慢,並且應用程序的內存會迅速消耗。
2.2 讀取文件的所有行
方法 read()
有一個替代方案——方法 readlines()
。它也會把整個文件讀入內存,但不以一個大字符串的形式返回,而是返回一個列表——文件中的每一行都成為列表中的一個元素。
方法 readlines()
會讀取文件的所有行,並將它們以字符串列表的形式返回。
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line.strip()) # strip() 刪除多餘的空格和換行符號
file.close()
如果你知道你需要逐行處理文件的內容,這種方法會很方便。缺點是對於非常大的文件,這種方法可能會佔用很多內存,因為所有行都會加載到內存中。
2.3 逐行迭代文件
對象 file
有內置的迭代器,所以你可以用 for
循環來遍歷其內容。這允許逐行讀取文件,而不需將整個文件加載到內存中。
例子:
file = open('example.txt', 'r')
for line in file:
print(line.strip())
file.close()
這種方法對於大文件來說在內存使用方面更有效,因為每次只讀取一行。但是如果需要返回到前一行或改變讀取順序,處理起來可能更困難。
讓我們再來比較一下這種方法與前一種方法:
使用迭代器 | 使用函數 readlines() |
---|---|
|
|
這種方法更簡單更快。然而,當你處理真實項目時,有時候加載所有數據到內存然後再處理會更快。
方法 readline()
和 readlines()
都用於從文件中讀取行,但是它們的工作方式不同。readline()
一次讀取一行,這讓你可以控制讀取過程,而且不需要將整個文件加載到內存中。這很適合在需要逐行處理文件或文件太大而無法完全加載到內存時使用。
相反地,readlines()
會馬上讀取文件的所有行並返回一個列表。如果你需要快速地獲取文件的所有行以便進行進一步處理,這種方法很方便。但它消耗更多的內存,尤其是對於大文件來說,因為整個文件會加載到內存中。
根據不同的任務,如果需要節省內存並控制讀取過程,readline()
可能更優選;而如果需要一次性獲取文件的所有行以進行處理,readlines()
則比較方便。
2.4 讀取部分文件
如果文件太大,你可以分塊讀取。在方法 read(n)
中可以傳遞參數 n
——需要讀取的字符數。如果文件中的字符少於 n
,那麼方法 read()
會直接讀取到文件結尾。
例子:
file = open('example.txt', 'r')
content = file.read(10) # 讀取前10個字符
print(content)
file.close()
這在需要分塊讀取大文件時很方便,或者需要處理固定大小的數據塊時也很好。但這種方式會忽略文件的行分割——行可能在中間被截斷。
2.5 按行讀取文件
如果因為某些原因你不想使用迭代器,那麼你可以手動按行讀取文件。對象 file
有一個方法 readline()
。不要與 readlines()
混淆。
方法 readline()
一次會讀取文件中的一行。
例子:
file = open('example.txt', 'r')
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.close()
在這個例子中,我們逐行讀取文件的內容,直到讀到的行為空為止。
GO TO FULL VERSION