アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

Pythonでのファイル操作入門:基本から応用まで

Featured image of the post

Pythonは、ファイル操作を簡単に行える便利なプログラミング言語です。ファイルの読み書きやフォルダ管理、ファイル形式の変換など、多くの作業がシンプルなコードで実現できます。本記事では、Pythonでのファイル操作について基本的な知識から応用までを解説します。


[目次を開く]

💡
前提条件

この記事では以下のPythonの標準ライブラリを使っています。
  • open 関数:
    • Pythonの組み込み関数で、ファイル操作の基本に使用されます。
  • os モジュール:
    • ファイルやディレクトリの存在確認、削除など、OSに依存する操作を提供します。
  • pathlib モジュール:
    • ファイルパス操作をオブジェクト指向で扱えるモジュール。
    • Python 3.4以降の標準ライブラリ。
  • shutil モジュール:
    • ファイルやフォルダの操作(コピー、削除など)をサポート。
  • csv モジュール:
    • CSVファイルの読み書き専用モジュール。
注)Pythonの標準ライブラリとは

Pythonの標準ライブラリとは、Pythonインストール時に同梱されているライブラリの集合で、追加のインストール作業を必要とせずに使えるモジュールやパッケージのことを指します。

特徴

  1. デフォルトで利用可能
    • Pythonをインストールすると同時に提供されるため、特別なセットアップやダウンロードは不要です。
  2. 豊富な機能
    • ファイル操作、文字列操作、ネットワーク通信、データ解析、エラー処理など、多岐にわたる機能が含まれています。
  3. 高い品質と安定性
    • Pythonコミュニティや開発チームによって維持管理されており、公式ドキュメントも充実しています。
  4. 追加の依存関係が不要
    • 他のライブラリをインストールしなくても、さまざまなタスクに対応できます。

主なカテゴリと例

以下は、Python標準ライブラリの主なカテゴリと例です:

1. 基本的なデータ型操作
  • math: 数値計算(平方根、三角関数など)
    import math
    print(math.sqrt(16))  # 4.0
  • statistics: 統計計算(平均、中央値など)
  • decimal: 高精度の浮動小数点計算
2. ファイル操作
  • os: ファイルやディレクトリの操作、環境変数の管理
  • pathlib: ファイルパス操作
  • shutil: ファイルやディレクトリのコピー・削除
  • csv: CSVファイルの読み書き
3. データ操作
  • json: JSONデータの読み書き
  • pickle: Pythonオブジェクトをシリアライズ
  • sqlite3: SQLiteデータベースとのやり取り
4. 文字列操作
  • re: 正規表現を使った文字列操作
  • string: 文字列に関する定数や便利な関数
  • unicodedata: Unicode文字列の処理
5. ネットワーク操作
  • http.client: HTTP通信
  • socket: ネットワークソケットの作成
  • urllib: URL操作やWebアクセス
6. 並行処理・スレッド
  • threading: スレッドを使った並列処理
  • asyncio: 非同期処理
  • multiprocessing: マルチプロセス処理
7. ユーティリティ
  • datetime: 日付と時刻の操作
  • random: ランダムな数値や選択を生成
  • itertools: イテレーションツール
  • functools: 高階関数や関数の操作ツール
8. エラーハンドリング・デバッグ
  • logging: ログの記録
  • traceback: 例外のスタックトレース取得
  • warnings: 警告の管理

ファイル操作の基本

ファイルを開く

Pythonでは、open()関数を使ってファイルを開きます。この関数は以下のように使用します。

file = open("example.txt", mode="r")  # "r"は読み取りモード

modeには以下のオプションがあります:

  • r: 読み取り専用
  • w: 書き込み専用(既存の内容を上書き)
  • a: 追記
  • b: バイナリモード(例: 画像やPDFファイル)
  • x: 新規作成専用(ファイルが存在するとエラー)
ファイルの読み書き

ファイルからデータを読み取る場合、以下のようにします:

with open("example.txt", mode="r") as file:
    content = file.read()
    print(content)

with文を使うことで、ファイルを自動的に閉じることができ、リソースの無駄遣いを防ぎます。

データを書き込む場合は、wモードを使用します:

with open("example.txt", mode="w") as file:
    file.write("新しい内容を追加します。")

応用的なファイル操作

ファイルの存在確認

ファイルが存在するかどうかを確認するには、osモジュールを利用します。

import os

if os.path.exists("example.txt"):
    print("ファイルが存在します。")
else:
    print("ファイルが存在しません。")

または、pathlibモジュールを使う方法もあります。

from pathlib import Path

if Path("example.txt").exists():
    print("ファイルが存在します。")
ファイルの削除

ファイルを削除する場合は、以下のコードを使用します:

import os

os.remove("example.txt")

フォルダを削除したい場合は、shutilモジュールを活用すると便利です。

import shutil

shutil.rmtree("example_folder")

CSVファイルの操作

Pythonでは、csvモジュールを使用してCSVファイルを簡単に操作できます。

CSVを読み取る例:

import csv

with open("data.csv", mode="r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

CSVに書き込む例:

import csv

data = [["名前", "年齢"], ["太郎", 30], ["花子", 25]]

with open("data.csv", mode="w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(data)

実用例:テキストファイルの分割

大きなテキストファイルを複数の小さなファイルに分割する例です。

def split_file(input_file, lines_per_file):
    with open(input_file, mode="r") as file:
        lines = file.readlines()

    for i in range(0, len(lines), lines_per_file):
        with open(f"split_{i//lines_per_file + 1}.txt", mode="w") as output_file:
            output_file.writelines(lines[i:i+lines_per_file])

split_file("large_file.txt", 100)  # 100行ごとに分割

ファイル操作における注意点

  1. エラーハンドリング

    エラーハンドリングについておさらいしたい人は以下の記事を参照してください。

    📄Arrow icon of a page linkエラーハンドリングとは?基礎から解説

    ファイル操作ではエラーが発生しやすいため、例外処理を行いましょう。

    try:
        with open("nonexistent.txt", mode="r") as file:
            content = file.read()
    except FileNotFoundError:
        print("ファイルが見つかりません。")
  2. データのバックアップ

    重要なファイルを操作する前にバックアップを取る習慣をつけましょう。


まとめ

Pythonでのファイル操作は、非常に柔軟で使いやすいです。基本的な操作から応用的な操作まで、さまざまな作業を簡潔に実現できます。

初めての方は、まずはopen()関数とwith文を理解するところから始めるとよいでしょう。応用例ではCSVや大規模なテキストファイルの操作も紹介しましたので、ぜひ活用してみてください。

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会