1
3

Python `os.path` vs `pathlib`: どちらを使うべきか

Posted at

はじめに

Pythonでファイルシステム操作を行う際、os.pathモジュールとpathlibモジュールの2つの選択肢があります。この記事では、両者の違いと使い分けについて解説します。

image.png

1. 概要

  • os.path: Python 2から存在する古くからあるモジュール
  • pathlib: Python 3.4で導入された比較的新しいモジュール

2. 主な違い

2.1 オブジェクト指向 vs 関数ベース

  • os.path: 関数ベースのアプローチ
  • pathlib: オブジェクト指向のアプローチ

2.2 パス操作の方法

# os.path
import os
path = os.path.join('folder', 'file.txt')
dirname = os.path.dirname(path)
basename = os.path.basename(path)

print(f"Path: {path}")
print(f"Directory: {dirname}")
print(f"Filename: {basename}")

# pathlib
from pathlib import Path
path = Path('folder') / 'file.txt'
dirname = path.parent
basename = path.name

print(f"Path: {path}")
print(f"Directory: {dirname}")
print(f"Filename: {basename}")

出力例:

# os.path の出力
Path: folder/file.txt
Directory: folder
Filename: file.txt

# pathlib の出力
Path: folder/file.txt
Directory: folder
Filename: file.txt

2.3 ファイル操作

# os.path
import os

filename = 'example.txt'
if os.path.exists(filename):
    print(f"{filename} exists")
    size = os.path.getsize(filename)
    print(f"File size: {size} bytes")
else:
    print(f"{filename} does not exist")

# pathlib
from pathlib import Path

filename = Path('example.txt')
if filename.exists():
    print(f"{filename} exists")
    size = filename.stat().st_size
    print(f"File size: {size} bytes")
else:
    print(f"{filename} does not exist")

出力例 (ファイルが存在する場合):

# os.path の出力
example.txt exists
File size: 1024 bytes

# pathlib の出力
example.txt exists
File size: 1024 bytes

3. どちらを使うべきか

3.1 pathlibを選ぶ理由

  1. 直感的で読みやすいコード
  2. オブジェクト指向的なアプローチ
  3. 豊富な組み込みメソッド
  4. Python 3.6以降ではopen()関数と互換性がある

3.2 os.pathを選ぶ理由

  1. 古いPythonバージョンとの互換性
  2. osモジュールの他の機能と組み合わせて使用する場合
  3. 既存のコードベースとの整合性

4. 結論

新しいプロジェクトや、Python 3.4以降を使用している場合はpathlibの使用をお勧めします。pathlibは直感的で強力な機能を提供し、コードの可読性を向上させます。

一方、古いPythonバージョンとの互換性が必要な場合や、既存のコードベースとの整合性を保つ必要がある場合はos.pathの使用も検討してください。

最終的には、プロジェクトの要件と個人の好みに応じて選択することが重要です。どちらを選んでも、一貫性を保つことがコードの保守性向上につながります。

image.png

5. 参考資料

以上の情報を参考に、あなたのプロジェクトに最適なモジュールを選択してください。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3