備忘録

【Python】PythonのPathlibの使い方

前提

Python: 3.12

基本

from pathlib import Path

# カレントディレクトリからの相対パス
file_path = Path("my_folder/my_file.txt")

# ファイルが存在するか確認
if file_path.exists():
    print("ファイルは存在します")

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

注意

Pathlibは、Python 3.4以降で標準ライブラリとして提供されている。
バージョンが古くてPathlibが使用できない場合は、 os.path を使用する。
os.path の使い方については以下で説明している。

1. 属性へのアクセス

.name

ファイルまたはディレクトリの名前を文字列として返す。

.stem

ファイル名の拡張子を除いた部分を返す。

.suffix

ファイル名の拡張子(ドットを含む)を文字列として返す。

.parent

親ディレクトリの Path オブジェクトを返す。

.parents

全ての親ディレクトリの Path オブジェクトを、ルートディレクトリから近い順に含むイテラブルを返す。

.parts

パスの各部分を文字列として含むタプルを返す。

2. パスの結合

/

Path オブジェクトと文字列、または2つの Path オブジェクトをスラッシュで結合し、新しい Path オブジェクトを作成する。

import pathlib
p1 = pathlib.Path('aaa')
print(p1 / 'bbb')
p2 = pathlib.Path('ccc')
print(p1 / p2)

実行結果

aaa/bbb
aaa/ccc

3. ファイル・ディレクトリの操作

.exists()

ファイルまたはディレクトリが存在する場合は True、そうでない場合は False を返す。

.is_dir()

ディレクトリの場合は True、そうでない場合は False を返す。

.is_file()

ファイルの場合は True、そうでない場合は False を返す。

.mkdir(exist_ok=False)

ディレクトリを作成する。
exist_ok=True を指定すると、ディレクトリが既に存在する場合でもエラーにならない。

.rename(target)

ファイルまたはディレクトリの名前を変更する。

.unlink(missing_ok=False)

ファイルを削除する。
missing_ok=True を指定すると、ファイルが存在しない場合でもエラーにならない。

.rmdir()

空のディレクトリを削除する。

.touch(exist_ok=True)

空のファイルを新規作成、または既存ファイルのタイムスタンプを更新する。

4. ファイルの読み書き

.open(mode='r', encoding=None)

ファイルオブジェクトを返し、ファイルの読み書きを行うことができる。

.read_bytes()

ファイルの内容をバイト列として読み込む。

.read_text(encoding=None)

ファイルの内容を指定されたエンコーディング(デフォルトはプラットフォーム依存)でテキストとして読み込む。

.write_bytes(data)

バイト列をファイルに書き込む。

.write_text(data, encoding=None)

テキストを指定されたエンコーディングでファイルに書き込む。

5. その他

.absolute()

絶対パスを表す新しい Path オブジェクトを返す。

.resolve(strict=False)

シンボリックリンクなどを解決した、正規化された絶対パスを返す。

.glob(pattern)

指定されたパターンに一致するファイルやディレクトリを Path オブジェクトとして返すイテレータを返す。

.rglob(pattern)

.glob() と似ていますが、サブディレクトリも再帰的に検索する。

.iterdir()

ディレクトリ内のファイルやディレクトリを Path オブジェクトとして返すイテレータを返す。

関連記事

  • 【Python】Pythonのos.pathの使い方
    前提 Python: 3.12 基本 import os.path file_path = os.path.join("data", "myfile.txt") if os.path.exists(file_path): print("ファイルは存在します") else: print("ファイルは存在しません")
  • 【Python】Pythonのargparseの使い方
    前提 Python: 3.12 参考 argparse — Parser for command-line options, arguments and sub-commands — Python 3.12.3 ドキュメント Pythonでコマンドライン引数を扱うための標準モジュール argparseは、ユーザーフレン
  • 【Python】正規表現 reモジュールの使い方
    前提 Python: 3.12 参考 re — Regular expression operations — Python 3.12.3 ドキュメント 基本 import re m = re.search('a.c', 'abcdef') m.group(0) よく使う特殊文字 . 任意の一文字にマッチ a.c は “abc”, “a1c” などにマッチ * 直前の文字の0回以上の
  • 【Python】Pythonでファイルの読み書きをする
    前提 Python: 3.12 基本 with open(file_name, 'w', encoding='utf-8') as f: f.write('Sample') 参考 7.2. ファイルを読み書きする — 7. 入力と出力 — Python 3.12.3 ドキュメント モードの指定 ‘r’ 読み込み用に開く (デフォルト) ‘w’ 書き込み
  • 【Python】文字列の基本【定義・結合】
    前提 Python: 3.12 参考 テキストシーケンス型 — str — 組み込み型 — Python 3.12.3 ドキュメント 定義 文字列を定義するには以下の記述方法がある。 シングルクォート' ダブルクォ