ファイルやディレクトリが存在するかどうかを確認するには 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()