[解決!Python]パスがディレクトリやファイルであるかどうかを調べるには:pathlibモジュール編解決!Python

PathlibモジュールのPathクラスが提供するis_dir/is_fileメソッドを使って、特定のパスがディレクトリ/ファイルを指しているかどうかを確認する方法を紹介する。

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

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

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

連載目次

from pathlib import Path

# テスト用にディレクトリとファイルを作成
d = Path('mydir')
d.mkdir(exist_ok=True)

f = Path('myfile.txt')
f.touch()

if d.is_dir():
    print(f'{d} is a directory')
else:
    print(f'{d} is not a directory')
# 出力結果:
#mydir is a directory

if f.is_file():
    print(f'{f} is a file')
else:
    print(f'{f} is not a file')
# 出力結果:
#myfile.txt is a file

for entry in Path('.').iterdir():
    if entry.is_dir():
        print(f'{entry} is a directory')
    elif entry.is_file():
        print(f'{entry} is a file')
    else:
        print(f'{entry} is not a directory nor file')
# 出力結果:
#test.py is a file
#myfile.txt is a file
#mydir is a directory


pathlibモジュールのPathクラス

 pathlibモジュールのPathクラスにはis_dirインスタンスメソッドとis_fileインスタンスメソッドがある。これらを使うことでPathクラスのインスタンスがディレクトリを参照しているのか、ファイルを参照しているのかを調べられる。is_dir/is_fileインスタンスメソッドはどちらも引数を持たない。

 以下に簡単な例を示す。

from pathlib import Path

# テスト用にディレクトリとファイルを作成
d = Path('mydir')
d.mkdir(exist_ok=True)

f = Path('myfile.txt')
f.touch()

# パスがディレクトリかどうかを調べる
if d.is_dir():
    print(f'{d} is a directory')
else:
    print(f'{d} is not a directory')
# 出力結果:
# mydir is a directory


 最初に行っているのは、Pathクラスのmkdirメソッドとtouchメソッドを使ったディレクトリ/ファイルの作成だ。これらについては「ディレクトリを作成/削除するには:pathlibモジュール編」と「ファイルを作成/削除するには」を参照のこと。

 is_dirメソッドはパスがディレクトリを参照しているときにはTrueを、そうでなければFalseを返す。上のコードでは、ディレクトリの作成に使用したPathオブジェクトに対してis_dirメソッドを呼び出しているのでTrueが返される。

 is_fileメソッドも同様だ。パスがファイルを参照しているときにはTrueを、そうでなければFalseを返す。以下のコード例でもファイル作成に使用したPathオブジェクトに対してis_fileメソッドを呼び出しているので、上と同様にTrueが返される。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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