Pythonスキルの習得

【Python入門】ファイル操作の基本から応用まで徹底解説

【Python入門】ファイル操作の基本から応用まで徹底解説

こんにちは、Zero-Cheeseです。

本記事は、「Python」を学び始めた方を対象に、

  • ファイル入出力(読込み・書込み)の基本から
  • 様々なファイル形式の扱い方

ご紹介します。

ファイル入出力の基本

ファイル入出力とは、

  • ファイルからデータを読込む(入力)ことと、
  • ファイルへデータを書込む(出力)こと

を指します。

ファイルの種類

ファイルは大きく分けて、以下の二つに、分類されます。

  • テキストファイル(文字データ)
  • バイナリファイル(文字以外のデータ、画像など)

この章ではまず、テキストファイルの入出力方法を、見ていきます。

Pythonでの、ファイル入出力方法(テキストファイル)

Pythonでファイルを操作する基本は、

  • ファイルを開き(open関数)
  • 必要な操作(読取り、書込み)
  • ファイルを閉じる

という、一連の手順を取ります。

特にファイル操作後の、「閉じる」操作は重要です。

ファイルが開かれたままになっていると、削除や他の操作が、できなくなる可能性があります。

以下に、「テキストファイルを開く → 読み書き → 閉じる」、一連の操作例を示します。

# ファイルを開く
file = open('example.txt', 'r+')  # 'r+' というモードで開く(後述)

# ファイルの内容を読み込む
content = file.read()
print(content)

# ファイルに内容を書き込む
file.write('\nHello, Python!')

# ファイルを閉じる
file.close()

上記コードの解説:

  1. example.txtというファイルを、「読み書きモード(後述)」で開きます。
  2. file.read()を使ってファイルの内容を読み、それを表示します。
  3. 次に、file.write()メソッドを使って、ファイルに書込んでいます。
  4. 最後に、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を開き、読み込みと書き込みを行った後、ファイルが自動的に閉じられます。

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形式
  • バイナリファイルの取扱い:画像ファイル等、バイナリファイルの操作方法

最後までお付き合い頂き、ありがとうございました。

また次回、お会いしましょう!