在 Python 中獲取檔案的行數

Syed Moiz Haider 2023年1月30日 2021年2月28日
  1. 在 Python 中使用 open()sum() 函式獲取檔案中的行數
  2. 在 Python 中使用 mmap.mmap() 方法獲取檔案中的行數
  3. 在 Python 中使用 file.read() 方法獲取檔案中的行數
在 Python 中獲取檔案的行數

本教程將演示用 Python 獲取檔案中總行數的各種方法。為了獲得檔案的總行數,我們首先需要讀取緩衝區中的檔案資料,我們可以通過一次性載入完整的檔案或者在檔案大小較大的情況下分小塊讀取資料來實現。

我們將看看如何使用 Python 中的各種方法來實現這兩種方法,下面將用示例程式碼來解釋。

在 Python 中使用 open()sum() 函式獲取檔案中的行數

獲取檔案行數的一個簡單方法是通過遍歷 open() 函式返回的檔案物件的每一行。

open(file, mode) 函式以 file 作為輸入,並返回一個檔案物件作為輸出。file 是一個類似路徑的物件,可以是字串或位元組物件,包含檔案路徑。mode 代表我們要開啟檔案的模式,如讀、寫、追加模式等。

下面的示例程式碼演示瞭如何在 Python 中使用 for 迴圈來獲取檔案中的行數。

with open('myFolder/myfile.txt') as myfile:
    total_lines = sum(1 for line in myfile)

print(total_lines)

在 Python 中使用 mmap.mmap() 方法獲取檔案中的行數

mmap.mmap(fileno, length) 方法從 fileno 指定的檔案中對映 length 位元組數,並返回 mmap 物件。如果 length 的值是 0,對映的最大長度將等於檔案大小。

我們可以使用 mmap.mmap() 方法返回的 mmap 物件,然後使用 mm.readline() 方法訪問行,直到到達檔案的末端。由於我們要載入完整的檔案,我們將傳遞 0 作為 length 引數。

示例程式碼:

import mmap

with open('myFolder/myfile.txt', "r+") as myfile:
    mm = mmap.mmap(myfile.fileno(), 0)
    total_lines = 0

    while mm.readline():
        total_lines += 1

print(total_lines)

在 Python 中使用 file.read() 方法獲取檔案中的行數

如果檔案的大小很大,我們需要一種快速的方法來讀取小塊的檔案,我們可以使用 file.read() 方法將資料以位元組陣列的形式讀取到一個指定大小的緩衝區中。

下面的示例程式碼演示瞭如何使用 file.read() 方法將檔案資料讀入緩衝區,然後遍歷得到行數。

lines = 0
size = 1024 * 1024

with open(r'C:\test\file.txt', "r+") as myfile:
    read_file = myfile.read

    buffer = read_file(size)
    
    while buffer:
        lines += buffer.count('\n')
        buffer = read_file(size)

if (lines != 0):
    lines += 1

print(lines)
Syed Moiz Haider avatar Syed Moiz Haider avatar

Syed Moiz is an experienced and versatile technical content creator. He is a computer scientist by profession. Having a sound grip on technical areas of programming languages, he is actively contributing to solving programming problems and training fledglings.

LinkedIn

相關文章 - Python File