Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
pathlib.Path()
『pathlib』モジュールは、ファイルパスをオブジェクトとして扱うモダンなAPI です。文字列ベースの『os.path』より直感的で読みやすいコードが書けます。
構文
from pathlib import Path
# Pathオブジェクトを作成します。
p = Path('ファイルパス')
# テキストファイルを一括読み込みします。
内容 = p.read_text(encoding='utf-8')
# テキストファイルに一括書き込みします。
p.write_text('内容', encoding='utf-8')
# パターンに一致するファイルを取得します。
ファイル一覧 = p.glob('**/*.txt')
# ディレクトリを作成します。
p.mkdir(parents=True, exist_ok=True)
# ファイルを削除します。
p.unlink()
主な属性・メソッド一覧
| 属性 / メソッド | 概要 |
|---|---|
| Path(パス) | パスオブジェクトを作成します。OS に応じた区切り文字を自動で処理します。 |
| p.read_text(encoding='utf-8') | ファイルの全内容を文字列として読み込みます。 |
| p.write_text(テキスト, encoding='utf-8') | 文字列をファイルに書き込みます。ファイルが存在しない場合は新規作成します。 |
| p.glob(パターン) | パターンに一致するファイルをジェネレータで返します。『**』で再帰的に検索できます。 |
| p.mkdir(parents=False, exist_ok=False) | ディレクトリを作成します。『parents=True』で親ディレクトリも一括作成します。 |
| p.unlink() | ファイルを削除します。ディレクトリには使えません。 |
| p.suffix | ファイルの拡張子(例: 『.txt』)を返します。 |
| p.stem | 拡張子を除いたファイル名部分を返します。 |
| p.name | パスの末尾部分(ファイル名)を返します。 |
| p.parent | 親ディレクトリのパスを返します。 |
| p.exists() | パスが存在する場合に『True』を返します。 |
| p / '子パス' | 『/』演算子でパスを結合します。 |
サンプルコード
from pathlib import Path
# Path オブジェクトを作成して情報を取得します。
p = Path('/Users/user/documents/report.txt')
print(p.name) # 『report.txt』と出力されます。
print(p.stem) # 『report』と出力されます。
print(p.suffix) # 『.txt』と出力されます。
print(p.parent) # 『/Users/user/documents』と出力されます。
# / 演算子でパスを結合します(join と同じ)。
base = Path('/var/www')
full = base / 'html' / 'index.php'
print(full) # 『/var/www/html/index.php』と出力されます。
# テキストファイルを読み書きします。
config_path = Path('config.txt')
config_path.write_text('key=value\n', encoding='utf-8')
content = config_path.read_text(encoding='utf-8')
print(content) # 『key=value』と出力されます。
# ディレクトリを作成します。
output_dir = Path('output/reports/2025')
output_dir.mkdir(parents=True, exist_ok=True)
# glob() でパターンに一致するファイルを取得します。
src_dir = Path('.')
for py_file in src_dir.glob('**/*.py'): # 再帰的にPythonファイルを検索します。
print(py_file)
# exists() で存在確認をします。
p2 = Path('config.txt')
if p2.exists():
text = p2.read_text(encoding='utf-8')
p2.unlink() # ファイルを削除します。
# カレントディレクトリを取得します。
cwd = Path.cwd()
print(f'現在のディレクトリ: {cwd}')
# スクリプトファイル自身のパスを取得します。
script_dir = Path(__file__).parent
print(f'スクリプトの場所: {script_dir}')
概要
『pathlib.Path』ではパスを文字列ではなくオブジェクトとして扱うため、属性でパスの各部分を取り出したり、『/』演算子でパスを結合したりと直感的なコードが書けます。Python 3.6以降は標準ライブラリの多くが『Path』オブジェクトを直接受け付けるため、文字列への変換(『str(p)』)が不要になっています。
『read_text()』や『write_text()』は内部で自動的にファイルを開いて閉じるため、『with open(...)』を書く必要がありません。ただしバイナリファイルを扱う場合は『read_bytes()』・『write_bytes()』を使い、テキストモードの関数と混同しないよう注意してください。
ファイルの読み書きの基本は『open() / ファイル.read() / ファイル.write()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。