スポンサーリンク

【Python入門】pathlibの使い方を完全解説|フォルダー・パス操作が簡単になる方法

Python入門
  1. 1. はじめに|ファイルやフォルダー操作、難しくない!
    1. 🧭 この記事でできるようになること
    2. 🧒 初心者にもやさしい書き方で解説!
  2. 2. パスの基本用語をやさしく解説
    1. 📁 ファイルとフォルダー(ディレクトリー)とは?
    2. 📍 パスってなに?
    3. 🧭 絶対パスと相対パスのちがい
    4. 💡 相対パスで使う記号
    5. 🧭 カレントディレクトリーって?
  3. 3. Pythonで使えるパス操作モジュール3つの比較
    1. 🧱 osモジュール:昔からあるベーシックな方法
    2. 🔍 globモジュール:ファイルを検索するのに便利!
    3. 🚀 pathlibモジュール:これからの主役!
    4. 👑 なぜ初心者にpathlibがおすすめなの?
  4. 4. pathlibモジュールの基本的な使い方
    1. ① Pathオブジェクトを作ってみよう
    2. ② 現在の作業フォルダーを確認してみよう
    3. ③ パスをつなげるのもカンタン!
    4. ④ 絶対パスを取得する方法
    5. 🧪 ここまでのまとめ
  5. 5. 実践!ファイルやフォルダーの一覧取得
    1. 🔍 フォルダーの中を調べるには .iterdir() を使う!
    2. 📝 一覧をまとめてリストにするには?
    3. 🧾 ファイル名やフォルダー名だけ欲しいときは?
    4. 🧠 文字列に変換するには?
    5. 🎯 ここまでのポイントまとめ
  6. 6. 判別とチェック方法
    1. 📄 .is_file():ファイルかどうかを確認!
    2. 📁 .is_dir():フォルダーかどうかを確認!
    3. ✅ .exists():存在するかどうかをチェック!
    4. 🔒 .is_symlink():シンボリックリンクかどうかもわかる
    5. 🎯 チェック方法まとめ
  7. 7. 再帰的にファイルを検索する方法
    1. 🔄 glob()とは?
    2. 🌟 全部を対象にしたい場合
    3. 📄 特定の拡張子だけを検索したい場合
    4. 🎯 よく使うパターン文字(ワイルドカード)
    5. 🛠 例:特定の画像ファイルだけ探して処理
    6. ✨ ここまでのまとめ
  8. 8. フォルダーやファイルの作成・削除
    1. 📝 ファイルを作成する:.touch()
      1. ファイルがあってもエラーにしない:exist_ok=True
    2. 🗑 ファイルを削除する:.unlink()
      1. ファイルがなくてもエラーにしない:missing_ok=True
    3. 📁 フォルダーを作成する:.mkdir()
      1. 中の階層まで一気に作りたい場合:parents=True
    4. ❌ フォルダーを削除する:.rmdir()
    5. 🔥 ファイル・フォルダー操作まとめ
  9. 9. まとめ|pathlibを使いこなしてPython力アップ!
    1. 💡 pathlibでできるようになったこと
    2. 🚀 なぜpathlibがオススメなの?
    3. 🎓 さらにレベルアップしたいあなたへ
    4. あわせて読みたい関連記事
  10. よくある質問(Q&A)
    1. 関連投稿:

1. はじめに|ファイルやフォルダー操作、難しくない!

Pythonを学んでいくと、だんだん「このファイルの中身を読みたいな」とか「新しくフォルダーを作って、その中にデータを保存したいな」と思うことが出てきます。
でも、**「ファイルとかフォルダーって難しそう…」**って感じていませんか?

実は、Pythonには「pathlib(パスリブ)」という便利な道具があって、それを使うとファイルやフォルダーの操作がとってもカンタンになるんです!


🧭 この記事でできるようになること

この記事では、こんなことができるようになります:

  • 今作業しているフォルダー(カレントディレクトリー)を確認できる
  • フォルダーの中に何があるか調べられる
  • 新しくファイルやフォルダーを作れる
  • ファイルやフォルダーがあるかどうかをチェックできる
  • フォルダーの中のファイルを一気に一覧で取得できる

しかも、全部**「pathlib」モジュール**を使ってサクサク書けるようになります!


🧒 初心者にもやさしい書き方で解説!

Pythonには他にもosglobといったファイル操作の道具がありますが、今回紹介するpathlibは、見た目がわかりやすくて、はじめての人にもオススメなんです。

たとえば、普通ならパスを文字列で書かなきゃいけないところを、pathlibならスラッシュ / を使ってフォルダーをつなげるだけ!
ちょっと感動するレベルで簡単になりますよ。


この記事を読み終えるころには、「あれ?ファイル操作ってこんなにカンタンだったの?」って思ってもらえるはず。
Pythonでパソコンの中を自由に動かせるスキルを、楽しく身につけていきましょう!




2. パスの基本用語をやさしく解説

ファイルやフォルダーを操作するには、「パス」という考え方を知っておく必要があります。
でも安心してください!イメージしやすく、ていねいに説明していきますね。


📁 ファイルとフォルダー(ディレクトリー)とは?

まず、「ファイル」と「フォルダー」について確認しましょう。

  • ファイル:写真、メモ帳、Excelなど、パソコンの中にあるデータそのもののこと。
  • フォルダー(またはディレクトリー):ファイルをまとめて入れておく入れ物のようなもの。

たとえば「音楽」というフォルダーの中に「song1.mp3」「song2.mp3」というファイルが入っている、というイメージです。


📍 パスってなに?

パスとは、パソコンの中でファイルやフォルダーがどこにあるかを示す「住所」のようなものです。

例:

C:/Users/ユーザー名/Desktop/sample.txt

これは「Cドライブの中の、ユーザー名のフォルダーの中の、デスクトップの中の、sample.txtというファイル」って意味ですね。


🧭 絶対パスと相対パスのちがい

パスには2種類あります。これは超重要なので、しっかりおさえておきましょう!

種類説明
絶対パスいちばん上から全部書くC:/Users/xxx/Desktop/sample.txt
相対パス今いる場所からの道だけ書く./sample.txt(今いる場所にあるsample.txt)

📝 相対パスは「カレントディレクトリー(=今作業している場所)」を基準に考えます!


💡 相対パスで使う記号

記号意味使い方の例
.今いる場所./data.txt(今の場所にあるファイル)
..1つ上のフォルダー../config.json(1つ上の場所にあるファイル)

🧭 カレントディレクトリーって?

カレントディレクトリーとは、今Pythonが作業している「場所」のことです。
たとえば「デスクトップ」でPythonを実行しているなら、カレントディレクトリーはデスクトップになります。

PythonではこのカレントディレクトリーをPath.cwd()で調べることができます!

from pathlib import Path

print(Path.cwd())

ここまでで、パスの考え方がかなりわかってきたと思います。




3. Pythonで使えるパス操作モジュール3つの比較

Pythonでファイルやフォルダーの場所を調べたり、操作したりするには、いくつかの方法があります。
中でもよく使われるのが、次の3つのモジュールです。

モジュール名特徴初心者向き度
os古くからある基本的な方法★★☆(標準的)
globファイルの検索に便利★★☆(サブ的に)
pathlib直感的でモダンな書き方★★★(おすすめ!)

それぞれの特徴を見ていきましょう!


🧱 osモジュール:昔からあるベーシックな方法

osモジュールは、Pythonでパスやファイルを扱う伝統的な方法です。
今でも多くのコードで使われていますが、パスが文字列で表現されるので、ちょっとわかりにくいこともあります。

import os

print(os.getcwd()) # カレントディレクトリを表示

ファイルのパスを文字列として操作するので、記号の扱いなどで間違えやすいのが難点です。


🔍 globモジュール:ファイルを検索するのに便利!

globモジュールは、特定のパターンに一致するファイルを一括で探すときに使います。

たとえば「このフォルダーの中の.txtファイルを全部探してほしい!」というときにぴったり。

import glob

files = glob.glob("*.txt")
print(files) # ['sample1.txt', 'note.txt'] など

ただし、パス操作の「全部」はできないので、補助的に使う感じです。


🚀 pathlibモジュール:これからの主役!

そして一番おすすめなのが、今回メインで紹介する pathlibモジュール です!

pathlibでは、パスを**「Pathオブジェクト」**という形で扱うため、スラッシュ(/)で直感的にパスをつなげることができます。
まるで本物のフォルダーを操作しているような感覚でコードが書けます。

from pathlib import Path

path = Path("data") / "sample.txt"
print(path) # data/sample.txt

👑 なぜ初心者にpathlibがおすすめなの?

  • コードが読みやすい&書きやすい!
  • エラーが出にくい!
  • 新しいPythonの書き方にピッタリ!

つまり、「これからPythonをちゃんと使いたい!」と思っているなら、pathlibから始めるのが一番の近道です!




4. pathlibモジュールの基本的な使い方

さあ、いよいよ実際にPythonで「pathlib」を使ってみましょう!
このセクションでは、pathlibを使ってパス(ファイルやフォルダーの場所)を操作する基本的な方法をやさしく紹介します。


① Pathオブジェクトを作ってみよう

まずは、pathlibを使うための準備です。

from pathlib import Path

これで Path クラスが使えるようになります!

次に、ファイルやフォルダーのパスを作ってみましょう:

my_path = Path("example.txt")
print(my_path)

これは「カレントディレクトリーにあるexample.txtというファイル」を表しています。
このとき my_path はただの文字列ではなく、Pathオブジェクトと呼ばれる特別なものになります。


② 現在の作業フォルダーを確認してみよう

今、自分がどのフォルダーにいるか(カレントディレクトリー)を調べたいときは、こうします:

current = Path.cwd()
print(current)

これで、「今Pythonが作業しているフォルダーの場所」がわかります!


③ パスをつなげるのもカンタン!

pathlibのすごいところは、スラッシュ / を使ってパスをつなげられること!

folder = Path("data")
file_path = folder / "sample.txt"
print(file_path) # data/sample.txt

os.path.join()のようなめんどうな書き方をしなくても、パズルみたいに直感的にパスを作れるのがうれしいですね。


④ 絶対パスを取得する方法

作ったパスがどこにあるのかをフルパス(絶対パス)で見たいときは、.resolve()を使います。

print(file_path.resolve())

これで data/sample.txt の「ちゃんとした場所」が表示されます!


🧪 ここまでのまとめ

操作コード例
Pathの作成Path("file.txt")
カレントディレクトリーの取得Path.cwd()
パスの結合Path("dir") / "file.txt"
絶対パスの取得.resolve()

ここまで覚えれば、もうPythonでパスを使った基本操作はバッチリです!




5. 実践!ファイルやフォルダーの一覧取得

Pythonで「このフォルダーの中にどんなファイルやフォルダーがあるか」を調べたいとき、pathlibの出番です!
このセクションでは、実際にファイル一覧を取得する方法を紹介します。


🔍 フォルダーの中を調べるには .iterdir() を使う!

まずは、ターゲットとなるフォルダーをPathオブジェクトとして作り、それに .iterdir() を使います。

from pathlib import Path

# 調べたいフォルダー
target_dir = Path("./sample_folder")

# 一覧を表示
for item in target_dir.iterdir():
print(item)

このコードを実行すると、sample_folderの中にあるファイルやフォルダーのパスが1つずつ表示されます!

💡 iterdir() は中身を1個ずつ取り出す「ジェネレーター」という仕組みです。


📝 一覧をまとめてリストにするには?

たとえば「全部まとめて扱いたい!」という場合は、list()でくるんであげましょう。

items = list(target_dir.iterdir())
print(items)

これで、フォルダーの中にあるファイルやサブフォルダーのリストが手に入ります。


🧾 ファイル名やフォルダー名だけ欲しいときは?

そのままだと「Pathオブジェクト」として表示されるので、ファイル名やフォルダー名だけ欲しいときは .name を使います!

for item in target_dir.iterdir():
print(item.name)

たとえばこんな感じで出力されます:

file1.txt
image.png
notes

🧠 文字列に変換するには?

もしPathオブジェクトを「ただの文字列」として扱いたい場合は str() を使います。

for item in target_dir.iterdir():
print(str(item))

これで sample_folder/file1.txt のような形式で表示されます。


🎯 ここまでのポイントまとめ

やりたいこと方法
フォルダー内の一覧取得.iterdir()
名前だけ取得.name
パスを文字列で取得str(item)
まとめて取得list(target_dir.iterdir())

これで、Pythonを使って「フォルダーの中身を一覧で表示する」ことができました!




6. 判別とチェック方法

pathlibを使えば、「これってファイル?フォルダー?」「このファイル、そもそも存在してる?」というチェックもカンタンにできます!
ここでは .is_file().exists() など、便利な「判別メソッド」を紹介していきますね。


📄 .is_file():ファイルかどうかを確認!

これはPathがファイルならTrue、違うならFalseを返してくれます。

from pathlib import Path

p = Path("sample.txt")

if p.is_file():
print("これはファイルです!")
else:
print("これはファイルではありません。")

ファイルが実際に存在していてファイル形式である必要があります!


📁 .is_dir():フォルダーかどうかを確認!

今度はPathがディレクトリー(フォルダー)かどうかを調べる方法です。

d = Path("my_folder")

if d.is_dir():
print("これはフォルダーです!")
else:
print("これはフォルダーじゃないよ。")

もちろん、これもそのフォルダーがちゃんと存在していないとFalseになります!


✅ .exists():存在するかどうかをチェック!

ファイルでもフォルダーでも、とにかく「存在しているかどうか」を調べたいときに便利なのが .exists() です。

p = Path("data.csv")

if p.exists():
print("存在してます!")
else:
print("そんなファイルないよ!")

これを使えば、ファイル操作の前に**「このファイルあるかな?」って事前チェック**ができます。エラー防止にもなって安心ですね。


🔒 .is_symlink():シンボリックリンクかどうかもわかる

あまり初心者の方が使う機会は少ないですが、is_symlink()を使えばショートカット(リンク)かどうかも調べられます。

p = Path("shortcut.lnk")

if p.is_symlink():
print("これはリンクファイルです。")

🎯 チェック方法まとめ

チェック内容メソッド戻り値の例
ファイル?.is_file()True / False
フォルダー?.is_dir()True / False
存在する?.exists()True / False
リンク?.is_symlink()True / False

これで、パスの種類を見分ける方法と、存在確認のやり方がバッチリわかりましたね!




7. 再帰的にファイルを検索する方法

「あるフォルダーの中をぜ〜んぶ調べたい!」「サブフォルダーの中まで見たい!」
そんなときに便利なのが、pathlib.glob() メソッド です!

ここでは、glob()を使って、フォルダーの中にあるファイルやディレクトリーを再帰的に検索する方法を紹介します。


🔄 glob()とは?

glob()は、特定のパターンに合うファイルやフォルダーをまとめて取得できる関数です。
しかも、** というワイルドカードを使えば、サブフォルダーの中まで再帰的に検索できます!


🌟 全部を対象にしたい場合

from pathlib import Path

base = Path("sample_folder")

for path in base.glob("**/*"):
print(path)

このコードで、sample_folderの中にあるすべてのファイルとフォルダーを表示できます。
**/*は、「このフォルダー以下のすべて(サブフォルダーも含む)」という意味です。


📄 特定の拡張子だけを検索したい場合

たとえば「.txtファイルだけ見つけたい!」ときはこう書きます:

for txt_file in base.glob("**/*.txt"):
print(txt_file)

これで、どんなに深いフォルダーの中にあっても .txt ファイルだけが見つかります!


🎯 よく使うパターン文字(ワイルドカード)

パターン意味
*なんでも(1階層内)"*.csv".csvファイル全部
**全階層にマッチ(再帰)"**/*" は全部
?1文字にマッチ"file?.txt"file1.txtfileA.txt
[abc]どれか1文字"file[123].txt"file1.txt, file2.txt, …

🧠 .glob()の結果も .iterdir()と同じくジェネレーターなので、for文で回すか、list()でまとめましょう。


🛠 例:特定の画像ファイルだけ探して処理

images = list(Path("photos").glob("**/*.png"))

for img in images:
print(f"画像ファイル見つけたよ:{img.name}")

こんな感じで、再帰的なファイル処理がとてもシンプルに書けちゃいます!


✨ ここまでのまとめ

やりたいことパターンメソッド
全部取得したい"**/*".glob()
.txtだけ取得"**/*.txt".glob()
.jpgだけ取得"**/*.jpg".glob()

これで、サブフォルダーの中まで含めて一括でファイルを探すテクニックがバッチリです!




8. フォルダーやファイルの作成・削除

Pythonとpathlibを使えば、新しくファイルやフォルダーを作ったり、不要なものを削除することもカンタンにできます!
このセクションでは、よく使う .touch().mkdir().unlink() などを紹介します。


📝 ファイルを作成する:.touch()

まずは、空のファイルを作ってみましょう。

from pathlib import Path

new_file = Path("hello.txt")
new_file.touch()

このコードを実行すると、「hello.txt」という空のファイルが作られます!

💡すでにファイルが存在していても .touch() を使うと、タイムスタンプが更新されます(=更新された扱いになります)。


ファイルがあってもエラーにしない:exist_ok=True

new_file.touch(exist_ok=True)

このオプションをつけると、ファイルがすでにあってもエラーになりません。安心して使えますね。


🗑 ファイルを削除する:.unlink()

不要になったファイルは .unlink() で削除できます。

target = Path("hello.txt")
target.unlink()

これだけで「hello.txt」は消えちゃいます!

❗ ファイルが存在しないとエラーになるので、削除前に .exists() でチェックしておくのがオススメ!


ファイルがなくてもエラーにしない:missing_ok=True

target.unlink(missing_ok=True)

このオプションをつけると、ファイルがなかった場合でもエラーが出ません。これも便利!


📁 フォルダーを作成する:.mkdir()

次は、フォルダー(ディレクトリー)を作る方法です。

folder = Path("new_folder")
folder.mkdir()

これで「new_folder」という名前のフォルダーが作られます!

💡 すでに同じ名前のフォルダーがあるとエラーになるので注意!


中の階層まで一気に作りたい場合:parents=True

nested = Path("parent/child/grandchild")
nested.mkdir(parents=True, exist_ok=True)

このようにすれば、途中の「parent」「child」がなくても、全部まとめて作ってくれます!


❌ フォルダーを削除する:.rmdir()

folder = Path("new_folder")
folder.rmdir()

このコードで「new_folder」を削除できますが、中に何か入っているとエラーになります。空っぽでないとダメです!


🔥 ファイル・フォルダー操作まとめ

操作メソッド注意点
ファイル作成.touch()空のファイルを作成
ファイル削除.unlink()存在チェック推奨
フォルダー作成.mkdir()parents=Trueで階層対応
フォルダー削除.rmdir()中が空でないと削除できない

これで、Pythonからファイルやフォルダーの作成・削除が自由自在になりましたね!




9. まとめ|pathlibを使いこなしてPython力アップ!

ここまで、Pythonの「pathlib」モジュールを使って、パスの操作やファイル・フォルダーの扱い方を一緒に学んできました。
どうでしたか? 最初はちょっと難しそうに感じたかもしれませんが、実はとっても直感的で便利だったと思います!


💡 pathlibでできるようになったこと

今回の記事で、あなたはこんなことができるようになりました:

✅ カレントディレクトリーを取得できる
✅ パスを自由に組み合わせて作れる
✅ フォルダーの中身を一覧で取得できる
✅ ファイルやフォルダーの存在確認や種類の判別ができる
✅ 再帰的にファイルを検索できる
✅ ファイルやフォルダーの作成・削除ができる

これらは、自動化スクリプトデータ処理の前準備ログ管理など、さまざまな場面で大活躍します!


🚀 なぜpathlibがオススメなの?

  • / 演算子でパスが直感的に扱える
  • .exists(), .is_file() などの便利メソッドがいっぱい
  • オブジェクト指向でミスが少ない
  • os.pathよりも読みやすくてPythonっぽい!

初心者から上級者まで、これからPythonを書く人は絶対に覚えておきたい必須モジュールといっても過言ではありません!


🎓 さらにレベルアップしたいあなたへ

pathlibの応用編としては、

  • open()との組み合わせでファイル読み書き
  • shutilと連携してファイルコピーや移動
  • pathlibでの相対パスからの変換・正規化

などもあります。興味が出てきたら、次のステップにもどんどん挑戦してみてください!


あわせて読みたい関連記事

pathlibを学んだあとは、関連する他のPython入門記事を読んで、さらに理解を深めましょう!


よくある質問(Q&A)

Q
pathlibはどのバージョンのPythonから使えますか?
A

Python 3.4から標準で使えます。Python 3.10や3.11など、最近のバージョンなら問題ありません。

Q
osモジュールとpathlib、どっちを使えばいいの?
A

これからPythonを学ぶ人には pathlibが断然おすすめ です!コードが読みやすく、ミスもしにくいです。

Q
Pathオブジェクトは文字列じゃないの?
A

そのとおりです。Path("file.txt") は「文字列」ではなく「Path型」というオブジェクトです。必要に応じて str() で変換できます。

※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。

※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。

スポンサーリンク