Pythonを使うと、テキストファイルを自在に読み込めます。ログ処理やデータ解析に必須のスキルであり、初心者でもすぐに使いこなせます。この記事では基本から応用まで丁寧に解説します。
なぜPythonでテキストファイルを読み込むのか
プログラミングの現場では、データをファイルとして保存し、それを読み込んで処理するケースが非常に多いです。例えば、CSVやログ、設定ファイルなどはテキスト形式で保存されていることが一般的です。そのため、Pythonでファイルを開いて中身を取得する方法を知っておくと、データ分析や自動化スクリプトの幅が広がります。さらに、Pythonはシンプルな構文で扱えるため、初心者でもすぐに実践できる点が大きな魅力です。
基本の方法:open()関数を使う
テキストファイルを読み込む最も基本的な方法はopen()
関数を使うことです。以下はシンプルな例です。
file_path = "sample.txt"
f = open(file_path, "r", encoding="utf-8")
content = f.read()
f.close()
print(content)
このコードでは、ファイルを開き、その内容をすべて読み込んでいます。ただし、最後にf.close()
でファイルを閉じるのを忘れるとリソースが解放されないので注意が必要です。したがって、より安全な方法として次に紹介する「with構文」を使うことをおすすめします。
より安全に:with構文を使ったファイル読み込み
with
を使うと、自動的にファイルが閉じられるため安全で便利です。Pythonでは推奨される書き方です。
file_path = "sample.txt"
with open(file_path, "r", encoding="utf-8") as f:
content = f.read()
print(content)
この方法なら、ファイルを閉じ忘れる心配がありません。特に複数ファイルを扱う場合やエラーが発生する可能性がある処理では、with
を使うことで安定したコードになります。
行ごとに読み込む方法
ファイルの中身が大きい場合、すべてを一度に読み込むとメモリに負担がかかります。そのため、行ごとに処理する方法がよく使われます。
file_path = "sample.txt"
with open(file_path, "r", encoding="utf-8") as f:
for line in f:
print(line.strip())
strip()
を使うことで改行を削除して表示できます。この方法はログファイルやCSVなど、行ごとに処理したいデータに特に向いています。
read(), readline(), readlines()の違い
ファイルの読み込みには複数の関数があり、それぞれ特徴があります。
read()
:ファイル全体を文字列として読み込むreadline()
:1行ずつ読み込む(ループで使うことが多い)readlines()
:すべての行をリスト形式で取得する
with open("sample.txt", "r", encoding="utf-8") as f:
all_text = f.read()
f.seek(0) # 読み取り位置を先頭に戻す
first_line = f.readline()
f.seek(0)
all_lines = f.readlines()
print(all_text)
print(first_line)
print(all_lines)
このように目的に応じて使い分けることで、効率的に処理ができます。例えば、CSV処理ではreadlines()
が便利です。
大きなファイルを扱うときの工夫
数GBの巨大なファイルを一度にread()
で読み込むと、メモリ不足になる可能性があります。その場合は、行ごとに処理したり、一定サイズごとに読み込む方法が有効です。
with open("large.txt", "r", encoding="utf-8") as f:
while True:
chunk = f.read(1024) # 1KBずつ読み込む
if not chunk:
break
print(chunk)
この方法を使えば、巨大ファイルでも効率的に扱えます。ログ解析やビッグデータ処理をする際には欠かせないテクニックです。
よくあるエラーと注意点
ファイルが存在しない場合
存在しないファイルを開こうとするとFileNotFoundError
が発生します。事前にos.path.exists()
やPath.exists()
で確認すると安心です。
文字コードの違い
特にWindows環境ではcp932
がデフォルトになることがあり、UTF-8のファイルを開くとエラーになることがあります。そのため、必ずencoding="utf-8"
を指定することを習慣にすると良いでしょう。
改行コードの扱い
OSによって改行コードが異なります。Pythonは自動的に処理してくれますが、厳密に扱いたい場合はnewline=""
を指定することができます。
応用テクニック:ファイルを一括処理する
複数のテキストファイルをまとめて処理する場面も多いです。その場合はglob
モジュールを使うと便利です。
from pathlib import Path
dir_path = Path("./texts")
for file in dir_path.glob("*.txt"):
with file.open("r", encoding="utf-8") as f:
print(f"{file.name}: {f.readline().strip()}")
この方法なら、フォルダ内のすべてのテキストファイルを一括で処理できます。データ整理や一括変換に役立つテクニックです。
Python初心者におすすめのサービス
「もっと実践的なコード例が欲しい」「自分の用途に合わせて教えてほしい」という方には、
テックアカデミーがおすすめです。
AI関連コースやシステム開発コース、アプリ開発コースなど豊富な学習が可能です。
さらに今なら無料相談でアマギフプレゼントもあるので、気軽にお申込みしてみてください。
また、プログラミング学習のプラットフォームとして、ココナラでは、現役エンジニアや経験豊富なPython講師が、あなたのレベルや目的に合わせてマンツーマンで指導してくれます。
書籍や動画ではカバーしきれない、あなた専用のカリキュラムで学べるのが最大の魅力。短時間で効率的にスキルを伸ばしたいなら、まずは出品者のサービスをチェックしてみましょう。
また、教える側としてスキルを活かして副業・独立を目指すことも可能です。
プログラミング経験やPythonの知識があれば、自分の得意分野をサービスとして出品し、全国の学習者から直接依頼を受けられます。オンラインで完結するため、場所や時間に縛られず、自分のペースで働けるのも大きなメリットです。
こちらのリンクから詳細をチェックしてみてください。
まとめ
Pythonでテキストファイルを読み込む方法は、基本のopen()
から始まり、行ごとの処理や大規模データの工夫まで幅広く存在します。初心者でも少しずつ試しながら慣れていけば、実務で大いに役立ちます。
以下のリンクから、
SESの組込みシステムから色々な不満を持ち、自社WEBサービスへ転職した実体験の記事がありますので、是非読んでみてください。とても喜びます。
SESの組込みシステムから自社WEBサービスのエンジニアに転職した話

コメント