英語608813 views
LaTeX957956 views
小学社会308836 views
高校国語786032 views
世界の国561137 views
小学算数1196064 views
いろは2990790 views
中学理科1627103 views
高校倫理1434311 views
中学英語809236 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()