如何使用 Python 按行讀取完整文字檔案?


Python 內建了檔案建立、寫入和讀取功能。在 Python 中,可以處理兩種型別的檔案:文字檔案和二進位制檔案(以二進位制語言、0 和 1 編寫)。

讓我們瞭解如何在 Python 中開啟檔案。Python 是一種優秀的通用程式語言,其標準庫中包含許多有用的檔案 I/O 函式和模組。

您可以使用內建的 open() 函式開啟用於讀取或寫入的檔案物件。您可以按照以下方式使用它來開啟檔案。

語法

下面顯示了open() 方法的語法。

File = open(“txt_file_name” ,”access_mode”)

Python 中有 6 種訪問模式,分別是‘r’、‘r+’、‘w’、‘w+’、‘a’‘a+’。它們解釋如下。

  • 只讀 ('r') − 此模式用於開啟文字檔案以進行讀取。

  • 讀寫 ('r+') − 此模式允許您讀取和寫入檔案。

  • 只寫 ('w') − 此模式允許您寫入檔案。

  • 寫讀 ('w+') − 此模式允許您讀取和寫入檔案。

  • 只追加 ('a') − 此模式允許您寫入檔案。

  • 追加和讀取 ('a+') − 此模式允許您讀取和寫入檔案。

在本文中,我們將瞭解如何逐行讀取檔案。

示例

以下是以讀取模式開啟名為example.txt檔案的示例。

file= open("example.txt", "r")

輸出

執行上述程式後,將生成以下輸出。

example.txt 檔案以讀取模式開啟。

使用 readline() 方法

readline() 方法用於在 Python 中逐行讀取檔案。

示例

以下是一個使用readline() 方法的示例,該方法讀取單行,需要我們使用和遞增計數器。此程式碼示例開啟一個檔案物件,其引用儲存在fp中,然後在 while 迴圈中迭代地呼叫該檔案物件的readline()來一次讀取一行。然後將該行列印到控制檯。

#python program to read a file line by line using readline()
file = 'example.txt'
#Opening a file whose reference is stored in fp
with open(file) as fp:
   line = fp.readline()
   cnt = 1
   while line:
#pritning the content as it reads line by line        
      print("Line {}: {}".format(cnt, line.strip()))
      line = fp.readline()
      cnt += 1

輸出

執行上述程式後,將生成以下輸出。

使用 readlines() 方法

readlines() 方法用於一次讀取所有行並將每一行作為字串元素返回到列表中。此函式適用於小型檔案,因為它將整個檔案內容讀取到記憶體中,然後將其拆分為行。使用strip()函式,我們可以遍歷列表並刪除換行符'\n'。

示例 1

以下是一個 Python 程式,它使用readlines() 方法逐行讀取檔案。名為 example.txt 的檔案使用open()函式以只讀模式開啟。然後,使用readlines()方法,將檔案的行作為輸出列印。

#python program to read a file line by line using readlines()
#Opening a file win read access mode
file = open("example.txt","r")
#printing the lines of the file using readlines()
print(file.readlines())

輸出

執行上述程式後,將生成以下輸出。

示例 2

readlines() 方法讀取每一行並將其放入列表中。然後,我們可以遍歷該列表並使用enumerate()為每一行建立索引。

file = open('example.txt', 'r')
fileContent= file.readlines()

for index, line in enumerate(fileContent):
   print("Line {}: {}".format(index, line.strip()))
file.close()

輸出

執行上述程式後,將生成以下輸出。

更新於: 2023年5月11日

瀏覽量:772

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.