[解決!Python]Path.existsメソッドを使ってパスが存在するかどうかを確認するには解決!Python

pathlibモジュールのPathクラスが持つexistsメソッドを使って、パスが実際に存在するディレクトリやファイルを参照しているかを確認する方法を紹介する。

» 2022年10月18日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

from pathlib import Path

mydir = Path('mydir')
myfile = Path('myfile.txt')
nofile_or_dir = Path('nofile_or_dir')

# mydirディレクトリとmyfile.txtファイルを作成
mydir.mkdir(exist_ok=True)
myfile.touch()

# existsメソッドはパスがディレクトリやファイルを指していればTrueを返す
print(mydir.exists())  # True
print(myfile.exists())  # True
print(nofile_or_dir.exists())  # False

# ディレクトリが存在しなければ作成する
if not mydir.exists():  # d.mkdir(exist_ok=True)
    mydir.mkdir()

# ファイルが存在していればバックアップを取ってから書き込みを行う
if myfile.exists():
    myfile.rename(myfile.stem + '.bak')
myfile.write_text('some text')

# 指定されたファイル/ディレクトリの存在確認の後、処理を振り分ける
def do_some_work(path):
    if not path.exists():
        res = input(f'{path} not exists. create it? (y/n)')
        if res == 'y':
            path.touch()

    if path.is_dir():
        print(f'{path} is a directory')
    elif path.is_file():
        print(f'{path} is a file')
    else:
        print(f'{path} is not a directory nor file')

paths = [mydir, myfile, nofile_or_dir]
for path in paths:
    do_some_work(path)


Pathクラスのexistsインスタンスメソッド

 pathlibモジュールのPathクラスにはexistsインスタンスメソッドが備わっている。existsメソッドは対象となるPathクラスのインスタンスがディレクトリかファイルを指していればTrueを、そうでなければFalseを返す(引数はない)。

 以下に例を示す。

from pathlib import Path

mydir = Path('mydir')
myfile = Path('myfile.txt')
nofile_or_dir = Path('nofile_or_dir')

# mydirディレクトリとmyfile.txtファイルを作成
mydir.mkdir(exist_ok=True)
myfile.touch()

# existsメソッドはパスがディレクトリやファイルを指していればTrueを返す
print(mydir.exists())  # True
print(myfile.exists())  # True
print(nofile_or_dir.exists())  # False


 この例では、最初にPathクラスをインポートした後で、mydirディレクトリとmyfile.txtファイルを作成している(ディレクトリの作成については「ディレクトリを作成/削除するには:pathlibモジュール編」を、ファイルの作成については「ファイルを作成/削除するには」を参照のこと)。

 最後の3行では存在しないパス「nofile_or_dir」への参照を含む、3つのPathクラスのインスタンスについてexistsメソッドを呼び出している。mydirディレクトリとmyfile.txtファイルは存在しているのでTrueが、nofile_or_dirについてはそのようなディレクトリもファイルも存在していないのでFalseが返される。

 このメソッドは例えば、ユーザーが指定したり、設定ファイルから読み出したりしたパスが実際に存在するかどうかを確認してから、何らかの処理を行う場合に使える。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。