数学講師2905779 views
高校日本史190903 views
MathPython500231 views
小学算数1202941 views
小学理科721270 views
高校物理161885 views
雑学1474079 views
中学理科1632943 views
英語616404 views
中学数学624816 views
Help
Tools

English

Python でファイルやディレクトリの存在を確認する(os.path.exists, pathlib)

ファイルやディレクトリが存在するかどうかを確認するには os.path.exists() または pathlib.Path.exists() を使う。

import os

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

# ディレクトリの存在確認
if os.path.exists('mydir'):
    print('ディレクトリが存在します')

os.path.exists() はファイルでもディレクトリでも存在すれば True を返す。ファイルかディレクトリかを区別したい場合は os.path.isfile() と os.path.isdir() を使う。

import os

path = 'data.txt'

if os.path.isfile(path):
    print('ファイルです')
elif os.path.isdir(path):
    print('ディレクトリです')
else:
    print('存在しません')

pathlib を使う方法

Python 3.4 以降では pathlib モジュールを使ったオブジェクト指向的な書き方もできる。

from pathlib import Path

path = Path('data.txt')

if path.exists():
    print('存在します')

if path.is_file():
    print('ファイルです')

if path.is_dir():
    print('ディレクトリです')

pathlib はパス操作をメソッドチェーンで書けるため、複雑なパス処理では可読性が高くなる。

シンボリックリンクの扱い

exists() はシンボリックリンクをたどって、リンク先が存在するかどうかを確認する。リンク自体の存在を確認したい場合は os.path.lexists() または Path.is_symlink() を使う。

import os
from pathlib import Path

# シンボリックリンク自体の存在確認
os.path.lexists('mylink')

# pathlib でシンボリックリンクかどうかを確認
Path('mylink').is_symlink()