Pythonでファイル・ディレクトリの存在確認をする方法【os.pathとpathlibを完全解説】

 

Pythonでプログラムを作る際、ファイルやディレクトリ(フォルダ)が存在するかどうかを事前に確認したいケースがよくあります。この記事では、Pythonでファイルやディレクトリの存在確認を行う方法を、サンプルコード付きで詳しく解説します。

ファイルの存在確認方法

os.path.exists()を使った基本的な方法

最も基本的な方法はos.path.exists()関数を使用することです。

import os

# ファイルの存在確認
if os.path.exists('sample.txt'):
    print('ファイルが存在します')
else:
    print('ファイルが存在しません')

os.path.isfile()でファイル限定チェック

ファイルのみを対象にしたい場合はos.path.isfile()を使用します。

import os

# ファイル限定の存在確認
if os.path.isfile('sample.txt'):
    print('ファイルです')
elif os.path.isdir('sample.txt'):
    print('ディレクトリです')
else:
    print('存在しません')

pathlib(Python 3.4以降推奨)を使った方法

より現代的なアプローチとしてpathlibモジュールを使用できます。

from pathlib import Path

# pathlibでファイル存在確認
file_path = Path('sample.txt')
if file_path.exists():
    print('ファイルが存在します')

# ファイル限定チェック
if file_path.is_file():
    print('ファイルです')

ディレクトリ(フォルダ)の存在確認方法

os.path.isdir()を使った方法

ディレクトリの存在確認にはos.path.isdir()を使用します。

import os

# ディレクトリの存在確認
if os.path.isdir('my_folder'):
    print('ディレクトリが存在します')
else:
    print('ディレクトリが存在しません')

pathlibでディレクトリチェック

from pathlib import Path

# pathlibでディレクトリ存在確認
dir_path = Path('my_folder')
if dir_path.is_dir():
    print('ディレクトリです')

実践的な使用例

安全なファイル処理

ファイルを開く前に存在確認を行う安全な処理方法:

import os

filename = 'data.txt'
if os.path.exists(filename):
    with open(filename, 'r') as f:
        content = f.read()
        print(content)
else:
    print(f'{filename}が見つかりません')

複数ファイルの一括チェック

from pathlib import Path

files = ['file1.txt', 'file2.txt', 'file3.txt']
for file in files:
    if Path(file).exists():
        print(f'{file}: 存在')
    else:
        print(f'{file}: 未存在')

注意点とベストプラクティス

パスの区切り文字

Windows、Mac、Linuxでパス区切り文字が異なるため、os.path.join()pathlibを使用することを推奨します。

import os
from pathlib import Path

# 推奨方法
path1 = os.path.join('folder', 'subfolder', 'file.txt')
path2 = Path('folder') / 'subfolder' / 'file.txt'

権限エラーの対処

ファイルが存在してもアクセス権限がない場合があります。

import os

try:
    if os.path.exists('protected_file.txt'):
        with open('protected_file.txt', 'r') as f:
            content = f.read()
except PermissionError:
    print('ファイルへのアクセス権限がありません')

まとめ

Pythonでファイル・ディレクトリの存在確認を行う方法は複数あります:

  • os.path.exists(): 基本的な存在確認
  • os.path.isfile(): ファイル限定チェック
  • os.path.isdir(): ディレクトリ限定チェック
  • pathlib: Python 3.4以降の推奨方法

現代的なPythonコードではpathlibの使用が推奨されていますが、既存コードとの互換性を考慮してos.pathを使用するケースも多くあります。用途に応じて適切な方法を選択しましょう。

■プロンプトだけでオリジナルアプリを開発・公開してみた!!

■AI時代の第一歩!「AI駆動開発コース」はじめました!

テックジム東京本校で先行開始。

■テックジム東京本校

「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。

<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。

<月1開催>放送作家による映像ディレクター養成講座

<オンライン無料>ゼロから始めるPython爆速講座