(最終更新月:2023年6月)
✔以下の疑問をお持ちの方へ向けた記事です
「Pythonでファイルをどのように読み込むのだろうか?」
「Pythonのファイル読み込みの基本的なコードを知りたい」
「Pythonを用いたファイル読み込みの実例を見てみたい」
✔この記事を読むことで得られる知識
- Pythonによるファイル読み込みの基本的な方法
- Pythonのファイル読み込みのコードやその応用
- Pythonでのファイル読み込みの具体的な実例
当記事では、Pythonを用いたファイル読み込みの基本的な方法から、その具体的なコードの書き方や、さまざまな形式のファイルを効率的に読み込むためのテクニックもご紹介します。
ぜひ最後までご覧ください。
ファイルの開き方と基本的な操作
ここでは、Pythonでのファイルの開き方と基本的な操作について解説します。
操作の基本パターンやエンコーディングの指定方法などを学びましょう。
- 基本的なファイルの開き方と読み書き方法
- ファイル操作の基本パターン
- エンコーディングの指定方法
基本的なファイルの開き方と読み書き方法
Pythonでファイルを開く最も基本的な方法はopen()
関数を使用することです。
この関数はファイル名とともに「モード」を引数として取り、ファイルオブジェクトを返します。
モードには、以下があります。
- ‘r’(読み込み)
- ‘w’(書き込み)
- ‘a’(追記)
- ‘b’(バイナリモード)
‘myfile.txt’という名前のファイルを読み込みモードで開いてみましょう。
file = open('myfile.txt', 'r')
ファイル操作の基本パターン
ファイルを開いた後は、そのファイルを読み込んだり、書き込んだりが可能です。
- read()メソッド:ファイルの内容を一度にすべて読み込む
- write()メソッド:使えば文字列をファイルに書き込む
ただし、ファイル操作が終わったら必ずclose()
メソッドを使ってファイルを閉じる必要があります。
書き込みモード
# ファイルを開く
file = open("example.txt", "w") # 書き込みモードでファイルを開く
# ファイルに書き込む
file.write("Hello, World!") # ファイルに文字列を書き込む
# ファイルを閉じる
file.close()
読み込みモード
# ファイルを開く
file = open("example.txt", "r") # 読み込みモードでファイルを開く
# ファイルから読み込む
content = file.read() # ファイルの内容を一度に読み込む
# ファイルを閉じる
file.close()
エンコーディングの指定方法
エンコーディングは、コンピュータがテキストデータを内部的にどのように表現するかを決定する重要な概念です。
Pythonのopen()関数では、encodingパラメータを指定することでエンコーディングを設定できます。
open('myfile.txt', 'r', encoding='utf-8')
UTF-8エンコーディングでテキストファイルを開きます。
ファイルの読み込み方法
ここでは、Pythonでテキストファイルを読み込むさまざまな方法を解説します。
さまざまなケースに応じた読み込み方法を学びましょう。
- テキストファイルの読み込み全般
- ファイル全体を一気に読み込む
- ファイル全体を行ごとに読み込む
- サンプルプログラム1:行ごとにファイルを読み込む方法
- サンプルプログラム2:for文を使った行単位の読み込み方法
- サンプルプログラム3:テキストファイルの書き込みと追記
テキストファイルの読み込み全般
Pythonでは、以下3つのメソッドを使ってテキストファイルからデータを読み込めます。
それぞれのメソッドで、読み込むデータ量と形式が異なるのです。
- read():ファイルの内容全体を一つの文字列として読み込む
- readline():一行だけを文字列として読み込む
- readlines():ファイルの各行を要素とするリストを生成する
ファイル全体を一気に読み込む
ファイルの全体を一度に読み込むには、read()メソッドを使用します。
このメソッドは、ファイルの内容全体をひとつの文字列として返すものです。
# ファイルを開く
file = open("example.txt", "r") # 読み込みモードでファイルを開く
# ファイル全体を読み込む
content = file.read()
# ファイルを閉じる
file.close()
# 読み込んだ内容を表示する
print(content)
しかし、大きなファイルを一度に読み込むとメモリを大量に消費するため、注意が必要です。
ファイル全体を行ごとに読み込む
行単位でファイルを読み込むには、readlines()メソッドまたはreadline()メソッドを使用しましょう。
readlines()
メソッド:ファイルの各行を要素とするリストを生成するreadline()
メソッド:一行だけを文字列として読み込む
# ファイルを開く
file = open("example.txt", "r") # 読み込みモードでファイルを開く
# readlines()メソッドを使用して行ごとに読み込む
lines = file.readlines()
# ファイルを閉じる
file.close()
# 各行を表示する
for line in lines:
print(line)
# readline()メソッドを使用して一行ずつ読み込む
file = open("example.txt", "r") # ファイルを再度開く
while True:
line = file.readline()
if not line:
break
print(line)
# ファイルを閉じる
file.close()
ファイルが大きい場合、readlines()
よりもreadline()
の方がメモリ効率が良いです。
サンプルプログラム1:行ごとにファイルを読み込む方法
以下に、readline()
メソッドを用いて行ごとにテキストファイルを読み込むサンプルプログラムを示します。
with open('myfile.txt', 'r') as f:
line = f.readline()
while line:
print(line.strip()) # .strip()は末尾の改行文字を除去します
line = f.readline()
サンプルプログラム2:for文を使った行単位の読み込み方法
また、Pythonではfor文を使って、行ごとにテキストファイルを読み込めます。
コードが簡潔で読みやすい方法のひとつです。
with open('myfile.txt', 'r') as f:
for line in f:
print(line.strip())
サンプルプログラム3:テキストファイルの書き込みと追記
テキストファイルへの書き込みには、writeメソッドと、以下2つのモードを使い分けましょう。
- モード「w」:単純な書き込み
- モード「a」:追記
以下にそのサンプルプログラムを示します。
with open('myfile.txt', 'w') as f:
f.write('Hello, World!\n') # ファイルに書き込みます
with open('myfile.txt', 'a') as f:
f.write('Hello, again!') # ファイルに追記します
テキストファイルへの書き込み
こちらでは、Pythonを使ったテキストファイルへの書き込みについてご覧いただきます。
単に書き込むだけでなく、さまざまなケースで使い分けられるようになるでしょう。
- 新規作成・上書きについて
- リストの書き込み方法
- テキストファイルへの追記と挿入
新規作成・上書きについて
open()関数の第二引数に’w’を指定すると、以下のようなときに役立ちます。
- Pythonでテキストファイルを新規作成したい
- 既存のテキストファイルを上書きしたい
ただし既にファイルが存在する場合、’w’モードで開くとその内容は全て消去されてしまうので注意が必要です。
# ファイルを新規作成し、テキストを書き込む
file = open("example.txt", "w") # 書き込みモードでファイルを開く
file.write("Hello, World!\n")
file.write("This is a test.")
# ファイルを閉じる
file.close()
リストの書き込み方法
リストの要素を一行ずつテキストファイルに書き込むには、writelines()
メソッドを使用しましょう。
ただしこのメソッドは、リストの各要素を直接書き込むだけで、行と行の間に自動的に改行文字を挿入しません。
必要に応じて、文字列の末尾に改行文字(\n
)を含めてください。
# リストの要素をテキストファイルに書き込む
data = ["Apple", "Banana", "Cherry", "Durian"]
with open("fruits.txt", "w") as file:
file.writelines(fruit + "\n" for fruit in data)
テキストファイルへの追記と挿入
テキストファイルへの追記と挿入の方法について見ていきます。
挿入したい箇所により、やり方が異なるのです。
- ファイル末尾への追記
- ファイル先頭・途中への挿入
ファイル末尾への追記
既存のテキストファイル末尾に追記するには、open()関数の第二引数「a」を指定しましょう。
このモードで開いたファイルにwrite()
メソッドを使って書き込みます。
# 既存のテキストファイル末尾に追記する
text = "This is a new line of text."
with open("itc.txt", "a") as file:
file.write(text)
新たに書き込まれたテキストは既存の内容の後に追加されるのです。
ファイル先頭・途中への挿入
テキストファイルの先頭や途中にテキストを挿入するには少し工夫が必要です。
- ファイル全体を読み込む
- 挿入したい場所に新たなテキストを加えた新しい内容を作る
- それを元のファイルに上書きする
この場合、ファイル全体を一度に読み込む必要があるので、扱うファイルのサイズに注意する必要があります。
# テキストファイルの先頭や途中にテキストを挿入する
insert_text = "This is the new inserted text."
with open("itc2.txt", "r") as file:
original_content = file.read()
new_content = insert_text + original_content
with open("itc2.txt", "w") as file:
file.write(new_content)
特殊なファイル操作
Pythonには、テキストファイルを扱うための他にもさまざまな特殊なファイル操作があります。
- ファイルが存在しないときの書き込み
- 新規作成のためのファイルオープン
- ファイル存在確認の前にオープン
ファイルが存在しないときの書き込み
Pythonでは、ファイルが存在しない場合に限り新規作成・書き込みをおこなえます。
open()関数のモードとして’x’を指定してください。
既に同名のファイルが存在する場合、エラーが発生します。
try:
with open("itc2.txt", "x") as file:
file.write("これは新しいファイルです。")
print("ファイルが作成され、書き込みが成功しました。")
except FileExistsError:
print("ファイルは既に存在しています。")
新規作成のためのファイルオープン
新規にファイルを作成するためには、先述した’x’モードを用いる方法の他に、’w’モードでファイルを開く方法もあります。
既に同名のファイルが存在していた場合は、その内容は消去されて新規の空のファイルが作成されることに注意してください。
ファイル存在確認の前にオープン
ファイルを開く前に、そのファイルが実際に存在するかどうかを確認したい場合もあります。
その場合、Pythonのos.pathモジュールのexists()関数を使用することで、ファイルの存在を確認可能です。
import os
file_path = "itc2.txt"
if os.path.exists(file_path):
print("ファイルは既に存在しています。")
else:
try:
with open(file_path, "x") as file:
file.write("これは新しいファイルです。")
print("ファイルが作成され、書き込みが成功しました。")
except FileExistsError:
print("ファイルは既に存在しています。")
バイナリファイルの読み書き
テキストファイルだけでなく、Pythonではバイナリファイルの読み書きも可能です。
バイナリファイルの読み書きには’b’モードを使用します。
このモードでは、ファイルはバイト列として扱われます。
# バイナリファイルの書き込み
with open("binary_file.bin", "wb") as file:
data = bytes([0x48, 0x65, 0x6C, 0x6C, 0x6F]) # バイト列を作成
file.write(data)
# バイナリファイルの読み込み
with open("binary_file.bin", "rb") as file:
data = file.read()
print(data) # バイト列が表示される
エラーハンドリング
ファイル操作では、さまざまな理由でエラーが発生する可能性があります。
エラーを適切にハンドリングするためには、try/except
文を使用しましょう。
- ファイルが存在しない
- パーミッションがない
- ディスクスペースが不足している
ファイルが存在しない場合のエラー(FileNotFoundError)
以下のようにエラーを回避できます。
try:
with open("file.txt", "r") as file:
# ファイルの読み込み処理
except FileNotFoundError:
print("File not found.")
ファイルへのアクセス権限がない場合のエラー(PermissionError)
エラーをキャッチするためには以下のようにします。
try:
with open("file.txt", "w") as file:
# ファイルへの書き込み処理
except PermissionError:
print("Permission denied.")
ディスクスペースが不足している場合のエラー(OSError)
エラー回避の方法はこちらです。
try:
with open("file.txt", "w") as file:
# ファイルへの書き込み処理
except OSError:
print("Insufficient disk space.")
ファイルを閉じる重要性
ファイルを開いたら必ず閉じることが大切です。
ファイルを閉じないと、データが正しく保存されなかったり、その後のファイル操作で問題が発生したりする可能性があります。
- closeメソッドを使用
- withを使用
close()メソッドを使用
closeメソッドを使用する例です。
file = open("file.txt", "w")
# ファイルに対する操作を行う
file.write("Hello, World!")
file.close()
with文を使用
with文を使えば、closeメソッドは不要です。
with open("file.txt", "w") as file:
# ファイルに対する操作を行う
file.write("Hello, World!")
# withブロックの終了時にファイルが自動的に閉じられる
まとめ
当記事では、Pythonでのファイル操作の基礎から応用について学習してきました。
- ファイルを開いて読み書きする基本的な方法
- 各種モードを使用した高度な操作
- エラーハンドリング
- 必ず行うべきファイルの閉じ方
Pythonでのファイル操作は、データ解析や自動化スクリプトなど、さまざまな場面で活用できます。
例えば、ウェブからスクレイピングしたデータをテキストファイルに保存したり、大量のテキストデータを一括で処理したりといったことが可能です。
是非、本記事を参考にPythonでのファイル操作をマスターし、あなたのプログラミングライフをより便利で豊かなものにしてください。