1. はじめに|ファイルやフォルダー操作、難しくない!
Pythonを学んでいくと、だんだん「このファイルの中身を読みたいな」とか「新しくフォルダーを作って、その中にデータを保存したいな」と思うことが出てきます。
でも、**「ファイルとかフォルダーって難しそう…」**って感じていませんか?
実は、Pythonには「pathlib(パスリブ)」という便利な道具があって、それを使うとファイルやフォルダーの操作がとってもカンタンになるんです!
🧭 この記事でできるようになること
この記事では、こんなことができるようになります:
- 今作業しているフォルダー(カレントディレクトリー)を確認できる
- フォルダーの中に何があるか調べられる
- 新しくファイルやフォルダーを作れる
- ファイルやフォルダーがあるかどうかをチェックできる
- フォルダーの中のファイルを一気に一覧で取得できる
しかも、全部**「pathlib」モジュール**を使ってサクサク書けるようになります!
🧒 初心者にもやさしい書き方で解説!
Pythonには他にもosやglobといったファイル操作の道具がありますが、今回紹介する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.txt や fileA.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入門記事を読んで、さらに理解を深めましょう!
- 🔗 【Python入門】自作モジュールの作り方と使い方を初心者向けにやさしく解説!
→ pathlibで作ったファイルやフォルダーを、自作モジュールで使いたいときに役立ちます。 - 🔗 【Python入門】for文で使える便利関数3選|tqdm・zip・enumerateの使い方と活用例を解説!
→.iterdir()や.glob()と組み合わせて、for文をもっと便利に!
よくある質問(Q&A)
- QpathlibはどのバージョンのPythonから使えますか?
- A
Python 3.4から標準で使えます。Python 3.10や3.11など、最近のバージョンなら問題ありません。
- Qosモジュールとpathlib、どっちを使えばいいの?
- A
これからPythonを学ぶ人には pathlibが断然おすすめ です!コードが読みやすく、ミスもしにくいです。
- QPathオブジェクトは文字列じゃないの?
- A
そのとおりです。
Path("file.txt")は「文字列」ではなく「Path型」というオブジェクトです。必要に応じてstr()で変換できます。







※当サイトはアフィリエイト広告を利用しています。リンクを経由して商品を購入された場合、当サイトに報酬が発生することがあります。
※本記事に記載しているAmazon商品情報(価格、在庫状況、割引、配送条件など)は、執筆時点のAmazon.co.jp上の情報に基づいています。
最新の価格・在庫・配送条件などの詳細は、Amazonの商品ページをご確認ください。