Python でファイルの行数を取得する

Syed Moiz Haider 2023年1月30日
  1. open() 関数と sum() 関数を用いた Python でファイルの行数を取得する
  2. mmap.mmap() メソッドを使ってファイルの行数を取得する
  3. file.read() メソッドを用いた Python でファイルの行数を取得する
Python でファイルの行数を取得する

このチュートリアルでは、Python でファイルの総行数を取得するための様々な方法を実演します。ファイルの総行数を取得するためには、まずファイルのデータをバッファに読み込む必要があり、ファイル全体を一度に読み込むか、ファイルサイズが大きい場合はデータを小さなチャンクに分けて読み込むことで行います。

どちらのアプローチも Python の様々なメソッドを使って実装する方法を見ていきますが、以下にコード例を挙げて説明します。

open() 関数と sum() 関数を用いた Python でファイルの行数を取得する

ファイルの行数を取得する簡単な方法は、open() 関数が返すファイルオブジェクトの各行を繰り返し処理することです。

関数 open(file, mode)file を入力として受け取り、出力としてファイルオブジェクトを返します。file は文字列またはバイトオブジェクトであり、ファイルのパスを含むパスライクなオブジェクトです。mode はファイルを開きたいモードを表します。

以下のコード例は、for ループを使って Python でファイルの行数を取得する方法を示しています。

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

print(total_lines)

mmap.mmap() メソッドを使ってファイルの行数を取得する

mmap.mmap(fileno, length) メソッドは fileno で指定したファイルから length バイト数のマップを作成し、mmap オブジェクトを返します。length の値が 0 の場合、マップの最大長はファイルサイズと等しくなります。

mmap.mmap() メソッドが返す mmap オブジェクトを用いて、mm.readline() メソッドを用いてファイルの最後までの行にアクセスすることができます。完全なファイルを読み込みたいので、length 引数に 0 を渡します。

コード例:

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)

file.read() メソッドを用いた Python でファイルの行数を取得する

ファイルのサイズが巨大で、ファイルを小さな塊に分割して高速に読み込む方法が必要な場合は、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