こんにちは、Zero-Cheeseです。
本記事は、「Python」を学び始めた方を対象に、
- ファイル入出力(読込み・書込み)の基本から
- 様々なファイル形式の扱い方を
ご紹介します。
ファイル入出力の基本
ファイル入出力とは、
- ファイルからデータを読込む(入力)ことと、
- ファイルへデータを書込む(出力)こと
を指します。
ファイルの種類
ファイルは大きく分けて、以下の二つに、分類されます。
- テキストファイル(文字データ)
- バイナリファイル(文字以外のデータ、画像など)
この章ではまず、テキストファイルの入出力方法を、見ていきます。
Pythonでの、ファイル入出力方法(テキストファイル)
Pythonでファイルを操作する基本は、
- ファイルを開き(
open
関数) - 必要な操作(読取り、書込み)
- ファイルを閉じる
という、一連の手順を取ります。
特にファイル操作後の、「閉じる」操作は重要です。
ファイルが開かれたままになっていると、削除や他の操作が、できなくなる可能性があります。
以下に、「テキストファイルを開く → 読み書き → 閉じる」、一連の操作例を示します。
# ファイルを開く
file = open('example.txt', 'r+') # 'r+' というモードで開く(後述)
# ファイルの内容を読み込む
content = file.read()
print(content)
# ファイルに内容を書き込む
file.write('\nHello, Python!')
# ファイルを閉じる
file.close()
上記コードの解説:
example.txt
というファイルを、「読み書きモード(後述)」で開きます。file.read()
を使ってファイルの内容を読み、それを表示します。- 次に、
file.write()
メソッドを使って、ファイルに書込んでいます。 - 最後に、
file.close()
でファイルを閉じています。
ファイルをOpenする際の、モードに関して:
上記コードの2行目、「file = open(‘example.txt’, ‘r+’)」の r+ 部分の説明になります。
- 読み込みモード (
'r'
):ファイルを読込むために使用。ファイルが存在しない場合。エラーが発生 - 書き込みモード (
'w'
):ファイルに書込むために使用。ファイルが存在しない場合、新しいファイルが作成。ファイルが存在する場合、新しい内容で上書き。 - 追加モード (
'a'
):ファイルの末尾に、新しい内容を追加するために使用。ファイルが存在しない場合、新しいファイルが作成。 - 読み書きモード (
'r+'
):ファイルを読み書きするために使用。ファイルが存在しない場合、エラーが発生。
with構文を使った、ファイル入出力方法
Pythonでは「with構文」を使うことで、ファイル操作を安全かつ効率的に、行うことができます。
この方法を使用すると、ファイルは自動的に閉じられ、エラー発生時のリスクが最小限で抑えられます。
以下のコードは、「with構文」を使用した例です。
with open('example.txt', 'r+') as file:
content = file.read()
print(content)
file.write('\nHello, Python!')
このコードでは、with
構文を使ってexample.txt
を開き、読み込みと書き込みを行った後、ファイルが自動的に閉じられます。
with構文に関して、さらに詳しく知りたい方は、こちらの記事をご覧ください。
CSV、JSONファイルの操作方法
前章では、Pythonでテキストファイルを扱う「基本」を学びました。
この章では、より実践的な「CSVとJSONファイル」の操作方法を解説します。
これらはデータ交換や保存に広く使用されており、これらが扱えるようになると、Pythonの活用範囲が大きく広がります。
CSVファイルの操作方法
CSV(Comma-Separated Values)は、データをカンマで区切った、テキストファイルです。
csvモジュールを使えば、CSVファイルの読み書きが、簡単に行えます。
CSVファイルの読込み
import csv
with open('example.csv', mode='r', encoding='utf-8') as file:
csv_reader = csv.reader(file)
for row in csv_reader:
print(row)
CSVファイルへの書込み
import csv
with open('example.csv', mode='w', newline='', encoding='utf-8') as file:
csv_writer = csv.writer(file)
csv_writer.writerow(['Name', 'Age'])
csv_writer.writerow(['Alice', 24])
csv_writer.writerow(['Bob', 19])
JSONファイルの操作方法
JSON(JavaScript Object Notation)は、軽量なフォーマットで、データの保存や、サーバーとのデータ送受信などに用いられます。
json
モジュールを使えば、JSONファイルの読み書きが、簡単に行えます。
JSONファイルの読込み
import json
with open('example.json', 'r') as file:
data = json.load(file)
print(data)
JSONファイルへの書込み
import json
with open('example.json', 'w') as file:
data = {'Name': 'Alice', 'Age': 24}
json.dump(data, file, indent=4)
5行目の「json.dump」 の、indent
引数を指定しない場合、データは一行で書き込まれます。
その結果、ファイルサイズが小さくなりますが、可読性が落ちます。
バイナリファイルデータの入出力方法
この章では、バイナリファイルの読み書き方法を、解説します。
バイナリファイルは、テキストではないデータで、
- 画像、音声、ビデオファイル
などが該当します。
バイナリファイルの読込み
バイナリファイルを読込むには、open
関数に'rb'
(読み込み専用、バイナリモード)を指定します。
以下は、Pythonを使用して画像ファイルを読み込む方法を示します。
# 画像ファイルをバイナリモードで読み込む
with open('example.jpg', 'rb') as file:
image_data = file.read()
print(image_data)
出力結果を見てみると、人間には読めない方式で、ファイルが作られている事が分かります。
バイナリファイルへの書込み
さきほど、読み込んだデータを、別ファイルに書き込む事ができます。
変数「image_data」に、さきほど画像を読み込んだデータが、代入されているものとします。
# 新しいファイル名で画像データをバイナリモードで書き込む
with open('copy_example.jpg', 'wb') as file:
file.write(image_data)
読み込んだ画像データを、copy_example.jpg
という新しいファイルに、書込んでいます。
バイナリファイルを操作する際は、ファイル形式を正しく理解した上で、実行してください。
不適切な操作により、ファイル破損が発生する可能性があります。
まとめ
本記事では、Pythonによるファイル操作の基本から応用までを、解説しました。
要点をまとめると、以下のとおりです。
- ファイル入出力の基本:ファイルを開き、読み書き、閉じる手順
- 様々なテキストファイル形式の取扱い:テキスト、CSV、JSON形式
- バイナリファイルの取扱い:画像ファイル等、バイナリファイルの操作方法
最後までお付き合い頂き、ありがとうございました。
また次回、お会いしましょう!