Python でファイルの行数を取得する
-
open()
関数とsum()
関数を用いた Python でファイルの行数を取得する -
mmap.mmap()
メソッドを使ってファイルの行数を取得する -
file.read()
メソッドを用いた 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 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