プログラムを書いていると、データを外部ファイルから読み込んだり、プログラムの実行結果をファイルに保存したりすることがよくあります。Pythonにはこのようなファイル操作を簡単に行うための便利な機能が豊富に揃っています。この章では、ファイルの読み書きの基本から、テキストファイルやCSVファイルの操作、さらにwith
文を使った効率的なファイル管理までを詳しく解説します。
Pythonでは、ファイルを操作するためにopen()
関数を使用します。この関数を使って、ファイルを開き、その内容を読み書きすることができます。open()
関数には2つの主な引数があります。
'r'
: 読み込み専用モード(既存のファイルを読み込む)'w'
: 書き込み専用モード(新しいファイルを作成し、既存のファイルがあれば上書きする)'a'
: 追記モード(既存のファイルに追記する)'b'
: バイナリモード(バイナリファイルを扱う場合に使用)'t'
: テキストモード(デフォルト、通常のテキストファイルを扱う)例として、簡単にファイルを開いて読み込む方法を見てみましょう。
# ファイルを読み込み専用で開く
file = open('example.txt', 'r')
# ファイル内容を読み込む
content = file.read()
# ファイルを閉じる
file.close()
# 読み込んだ内容を表示
print(content)
この例では、example.txt
というファイルを開き、その内容を読み込んで変数content
に保存し、最後にファイルを閉じています。open()
関数でファイルを開いた後は、必ずclose()
メソッドを呼び出してファイルを閉じる必要があります。ファイルを閉じないと、リソースの浪費やデータの破損が発生する可能性があります。
ファイルにデータを書き込むには、open()
関数のモードを'w'
に設定します。次の例では、新しいテキストファイルを作成し、そこに文字列を書き込んでみます。
# 書き込み専用でファイルを開く
file = open('output.txt', 'w')
# ファイルにデータを書き込む
file.write("Hello, Python!\n")
# ファイルを閉じる
file.close()
このコードは、output.txt
という新しいファイルを作成し、その中に"Hello, Python!"
というテキストを書き込みます。このファイルがすでに存在する場合、内容は上書きされます。
ファイルに複数行のテキストを書き込むことも可能です。次の例では、リストに保存されたデータをファイルに書き込んでみます。
lines = ["1行目のテキスト\n", "2行目のテキスト\n", "3行目のテキスト\n"]
# ファイルを開く
file = open('output.txt', 'w')
# 各行をファイルに書き込む
file.writelines(lines)
# ファイルを閉じる
file.close()
writelines()
メソッドを使うと、リストなどのイテラブル(反復可能な)オブジェクトに格納された複数のデータを一度に書き込むことができます。
ファイルを操作する際に、open()
関数でファイルを開いた後、必ずclose()
メソッドを呼び出す必要があることは先ほど説明しましたが、この手順を忘れてしまうと、ファイルが適切に閉じられないという問題が発生します。
Pythonでは、with
文を使うことで、このようなリスクを回避できます。with
文を使うと、ファイル操作が終了した時点で自動的にファイルを閉じてくれます。
# with文を使ってファイルを開く
with open('example.txt', 'r') as file:
content = file.read()
# ファイルを閉じる必要はない
print(content)
このコードでは、with
ブロックの中でファイルを開き、ブロックが終了すると自動的にファイルが閉じられます。これにより、close()
を呼び出す必要がなくなるだけでなく、プログラムが途中でエラーを起こしてもファイルが適切に閉じられるというメリットがあります。
ファイルの読み込みにはいくつかの方法があります。ここでは代表的なものを紹介します。
read()
メソッドread()
メソッドは、ファイルの全内容を一度に読み込む方法です。小さなファイルを扱う場合には便利ですが、大きなファイルの場合はメモリ不足の原因になることがあります。
with open('example.txt', 'r') as file:
content = file.read()
print(content)
readline()
メソッドreadline()
メソッドは、ファイルを1行ずつ読み込む方法です。ファイルの内容を行ごとに処理したい場合に適しています。
with open('example.txt', 'r') as file:
line = file.readline()
while line:
print(line, end='') # 改行を防ぐためにend=''を使用
line = file.readline()
readlines()
メソッドreadlines()
メソッドは、ファイル全体をリストとして読み込む方法です。各行がリストの要素として格納されるので、行ごとに処理する場合に便利です。
with open('example.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line, end='')
テキストファイルの他にも、CSV(カンマ区切り値)ファイルを操作することもよくあります。Pythonの標準ライブラリには、CSVファイルを簡単に扱うためのcsv
モジュールが用意されています。
次に、CSVファイルを読み込む方法を見てみましょう。csv.reader
を使用すると、CSVファイルを行ごとにリストとして読み込むことができます。
import csv
with open('data.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
このコードでは、data.csv
というCSVファイルを開き、各行をリストとして表示します。
次に、CSVファイルにデータを書き込む例を見てみましょう。csv.writer
を使って、リスト形式のデータをCSVファイルに書き込みます。
import csv
data = [
["名前", "年齢", "職業"],
["太郎", "30", "エンジニア"],
["花子", "25", "デザイナー"]
]
with open('output.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(data)
writer.writerows()
メソッドを使うと、リストのリスト(行ごとのデータ)を一度に書き込むことができます。
ファイル操作は外部ファイルに依存するため、思わぬエラーが発生する可能性があります。たとえば、存在しないファイルを開こうとしたり、書き込み権限がない場所にファイルを作成しようとした場合です。このような場合には、例外処理を行うことで、プログラムがクラッシュするのを防ぎ、適切なエラーメッセージを表示することができます。
try:
with open('non_existent_file.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("指定されたファイルが見つかりませんでした。")
except PermissionError:
print("ファイルへのアクセス権がありません。")
except Exception as e:
print(f"予期しないエラーが発生しました: {e}")
この例では、FileNotFoundError
やPermissionError
を捕捉し、それぞれのエラーメッセージを表示します。
まとめ
この章では、Pythonにおける基本的なファイル操作からCSVファイルの操作、with
文を使ったファイル管理、例外処理までを詳しく解説しました。ファイル操作はPythonプログラムにおいて非常に重要なスキルであり、これらの基礎を押さえることで、より複雑なデータ処理やログ管理、ファイルベースのデータ保存などに応用することができます。
プログラミングを始めたいと思っているそこのあなた、独学よりもプログラミングスクールが断然おすすめです!理由は簡単、続けやすさです。
独学でプログラミングを続けるのは、実はかなりハードルが高いんです。データによると、なんと87.5%もの学習者が途中で挫折しているとか。一方、各プログラミングスクールが公表しているデータによると、受講生の約95%が最後までやり抜いているとのこと。数字を見れば一目瞭然、プログラミングスクールの方が圧倒的に続けやすいんです。
プログラミングスクールには有料と無料のタイプがありますが、その違いは次の通りです:
どちらが自分に合っているか、よく考えて選ぶのが大事です。
プログラミング初心者でも学びやすいと評判の『FREEKS』、その特徴は以下の通り:
なんと、月会費のみで全カリキュラムが受け放題!Java、PHP、HTML/CSS、JavaScriptなど、多彩なプログラミング言語が学べるんです。しかも、AIが質問に自動で答えてくれるシステムも導入済み。
カリキュラムを終了した後には、Freeks経由で未経験者でも取り組める副業案件の受注が可能。実務を通じてスキルを磨き、市場価値の高いエンジニアへの道が開けます。
独学で悩むくらいなら、まずはプログラミングスクールをチェックしてみるのもアリかもしれませんよ!
↓ ↓ こちらをクリック ↓ ↓