いろは2986023 views
高校化学2913383 views
高校生物549842 views
教育148875 views
小学理科717236 views
数学講師2852771 views
Computer365120 views
高校日本史189857 views
高校物理158224 views
中学英語808712 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()