Pythonはシンプルかつ強力な文法で、さまざまな用途に使える人気の高いプログラミング言語です。その中でも「ファイルの読み込み」は、データ分析やログ処理、設定ファイルの取り扱いなど、幅広いシーンで必要になります。この記事では、Pythonでファイルを読み込むための基本的な方法から、文字コードの扱いやエラー処理のポイントまで、初心者にもわかりやすく丁寧に解説します。これからPythonでファイル操作を学びたい人、中級者としてさらに知識を深めたい人、どちらにも役立つ内容です。
Pythonでファイルを読み込むには、まず基本となるのがopen()
関数です。この関数はファイルを開き、その内容にアクセスできるようにします。
file = open('sample.txt', 'r')
content = file.read()
file.close()
print(content)
この例では、sample.txt
というファイルを読み取りモード('r'
)で開き、全内容をread()
で取得しています。読み込みが終わったらclose()
でファイルを閉じるのが基本です。
open()
を使う際、ファイルを閉じ忘れるとリソースリーク(メモリやファイルディスクリプタの無駄遣い)につながる可能性があります。これを防ぐには、with
構文を使うのがベストプラクティスです。
with open('sample.txt', 'r') as file:
content = file.read()
print(content)
with
構文を使えば、処理が終わった後に自動的にファイルが閉じられるため、安心して使用できます。
open()
関数の第2引数には「モード(mode)」を指定します。主なモードには次のようなものがあります。
モード | 説明 |
---|---|
'r' | 読み取り専用(ファイルが存在しないとエラー) |
'w' | 書き込み専用(既存ファイルは上書き) |
'a' | 追記(ファイルの末尾に追加) |
'b' | バイナリモード(例:'rb' でバイナリ読み込み) |
'+' | 読み書き両用(例:'r+' ) |
読み込みだけでなく、ファイルの書き込みや追記も含めて、目的に応じて適切なモードを選びましょう。
ファイルの読み方には3つのメソッドがあります。それぞれの用途に応じて使い分けると効率的です。
ファイル全体を一度に読み込みます。小さなファイル向き。
with open('sample.txt', 'r') as file:
content = file.read()
print(content)
1行ずつ読み込みます。大きなファイルを処理する際に便利です。
with open('sample.txt', 'r') as file:
line = file.readline()
while line:
print(line.strip())
line = file.readline()
ファイル全体を行ごとのリストで取得します。
with open('sample.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
日本語ファイルを読み込むときに、「UnicodeDecodeError」が出ることがあります。これは文字コード(エンコーディング)が一致しないためです。日本語ファイルではutf-8
またはshift_jis
が使われていることが多いため、明示的に指定するのが安全です。
with open('japanese.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
Windows環境ではencoding='cp932'
(Shift_JISの別名)もよく使われます。
ファイルを開く前に、その存在を確認しておくとより安全なコードになります。Pythonのos.path
モジュールやtry-except
構文を使いましょう。
import os
filename = 'sample.txt'
if os.path.exists(filename):
with open(filename, 'r') as file:
print(file.read())
else:
print('ファイルが存在しません')
あるいは、例外処理で対応することもできます。
try:
with open('sample.txt', 'r') as file:
print(file.read())
except FileNotFoundError:
print('ファイルが見つかりませんでした')
CSV形式のファイルを読み込むには、Python標準ライブラリのcsv
モジュールが便利です。
import csv
with open('data.csv', newline='', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
for row in reader:
print(row)
タブ区切りなどの場合はdelimiter='\t'
を指定すれば柔軟に対応できます。
設定ファイルなどでは、JSON形式のデータが使われることもあります。Pythonのjson
モジュールを使えば、ファイルから辞書型(dict)として読み込めます。
import json
with open('config.json', 'r', encoding='utf-8') as f:
config = json.load(f)
print(config)
エラー内容 | 原因 | 対処法 |
---|---|---|
FileNotFoundError | ファイルが存在しない | パスの確認、try-except で補足 |
UnicodeDecodeError | エンコーディングが不一致 | encoding= を指定 |
PermissionError | アクセス権がない | ファイルの権限を確認 |
IsADirectoryError | ディレクトリを開こうとした | ファイルパスを確認 |
エラーは予防も大切ですが、発生時にうまく処理することも重要です。
Pythonでのファイル読み込みは、初歩的な操作の一つですが、さまざまな工夫や応用ができる奥深い分野でもあります。基本のopen()
とwith
構文の使い方をしっかり押さえたうえで、文字コードや例外処理、CSVやJSONといった形式の読み込みにもチャレンジしてみましょう。安全で効率的なファイル操作ができれば、あなたのPythonスキルは一段とアップするはずです。