Pythonでファイルの内容を行ごとにリストとして取得する`readlines()`メソッドについて、基本的な使い方から実践的な例まで詳しく解説します。

readlines()メソッドの基本

`readlines()`は、ファイルの全行を読み込んでリストとして返すメソッドです。各行は文字列として、改行文字(`\n`)付きでリストの要素となります。

with open('sample.txt', 'r') as file:
    lines = file.readlines()

基本的な使用例

# sample.txtの内容:
# Hello
# World
# Python

with open('sample.txt', 'r') as file:
    lines = file.readlines()
    
print(lines)
# 出力: ['Hello\n', 'World\n', 'Python\n']

改行文字を削除する方法

リストの各要素から改行文字を削除するには、`strip()`メソッドを使用します。

with open('sample.txt', 'r') as file:
    lines = [line.strip() for line in file.readlines()]
    
print(lines)
# 出力: ['Hello', 'World', 'Python']

メモリ効率を考慮した使用方法

大きなファイルを扱う場合、`readlines()`は全行をメモリに読み込むため非効率的になる可能性があります。その場合は、以下のような方法を推奨します。

# より効率的な方法
with open('sample.txt', 'r') as file:
    lines = [line.strip() for line in file]

エラー対処法

FileNotFoundError

ファイルが存在しない場合に発生する一般的なエラーです。

try:
    with open('non_existent.txt', 'r') as file:
        lines = file.readlines()
except FileNotFoundError:
    print("ファイルが見つかりません")

UnicodeDecodeError

文字エンコーディングの問題による場合は、適切なエンコーディングを指定します。

with open('sample.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()

実践的な使用例

CSVファイルの読み込み

with open('data.csv', 'r') as file:
    lines = file.readlines()
    header = lines[0].strip().split(',')
    data = [line.strip().split(',') for line in lines[1:]]

特定の行を処理

with open('sample.txt', 'r') as file:
    lines = file.readlines()
    # 偶数行のみ抽出
    even_lines = [line.strip() for i, line in enumerate(lines) if i % 2 == 0]

まとめ

`readlines()`メソッドは、ファイルの内容を簡単にリスト化できる便利な機能です。ただし、大きなファイルを扱う場合はメモリ使用量に注意が必要です。状況に応じて、適切な使用方法を選択することが重要です。

エラーが発生した場合は、ファイルの存在確認やエンコーディングの指定など、適切なエラーハンドリングを実装することで、安定したファイル処理を実現できます。