【Python】ファイルやディレクトリの存在確認

4 min

こんにちは。ナミレリです。Pythonメモのコーナーです。
Pythonでプログラミングしているときによく使うけれど忘れがちでここまで出かかってるけど思い出せないようなコードを自分用にメモしていきます。

今回はPythonでファイルやディレクトリの存在確認を行う際に用いる標準ライブラリの「os.path」モジュールのいくつかのモジュールについてのメモです。

この記事はこんな人にオススメ

  • Pythonでファイルの存在確認をしたい
  • Pythonでディレクトリの存在確認

ファイルやディレクトリの内容を読み込んだりまたは書き込みする前に、そのファイルやディレクトリの存在確認をすることはとても重要ですね。

この記事でわかること

  • ファイルまたはディレクトリの存在確認(os.path.exists)の方法
  • ファイルの存在確認(os.path.isfile)の方法
  • ディレクトリの存在確認(os.path.isdir)の方法

この記事のMac環境
  • M2 MacBook Air 13.6 インチ
  • macOS Monterey 12.5
  • Python 3.9.7
Parallels Desktop 20 for Macの無料トライアル もありますので、ぜひダウンロードして試してみてください。M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。
NEW Parallels Desktop 20 for Mac

Parallels Desktop 20 for Macは、M1/M2/M3のMac上で快適にMacやUbuntu、Windowsが動作します。

14日間の無料トライアルもありますので、ぜひダウンロードして試してみてください。

Pythonでファイルやディレクトの存在確認する

ファイルやディレクトリの内容を読み込んだりまたは書き込みする前に、そのファイルやディレクトリの存在確認をすることはとても重要ですね。

例えば、

ディレクトリA画像Aを保存したい場合に、ディレクトリAがあったら保存する。ディレクトリAがなかったらディレクトリAを作成して画像Aを保存する。

というような処理を行うことができます。

というわけで、今回は「ファイルやディレクトリの存在確認をする」よく使うけれど忘れがちなPythonのテーマで紹介します。

使うライブラリやモジュールについて

前提条件

今回は下のようなディレクトリファイルでテストしてみます。

py_os_pathというディレクトリにa.txta_link.txtb_link.txtの3つのファイルが存在します。a_link.txta.txtへのシンボリックリンク。b_link.txtb.txtへのシンボリックリンクですが参照元であるb.txtは存在しない、という環境だとします。

少しわかりにくいですが、treelsで確認すると下のような状態です。

ターミナルでtreeを実行した結果
ターミナルでtreeを実行した結果

ファイルまたはディレクトリの存在確認(os.path.exists)

Pythonで存在確認は、標準ライブラリos.pathモジュールのexistsメソッドを用います。

ファイルやディレクトリのパスが存在する場合はTrueを返し、存在しない場合はFalseを返します。シンボリックリンクの場合はリンクが壊れている場合はFalseを返します。

os.path.exists


import os

# py_os_path
path_1 = '/Users/test/blog/py_os_path/'
result_1 = os.path.exists(path_1)
print(result_1) # py_os_pathは存在するディレクトリなのでTrueが返る

# a.txt
path_2 = '/Users/test/blog/py_os_path/a.txt'
result_2 = os.path.exists(path_2)
print(result_2) # a.txtは存在するファイルなのでTrueが返る

# a_link.txt
path_3 = '/Users/test/blog/py_os_path/a_link.txt'
result_3 = os.path.exists(path_3)
print(result_3) # a_link.txtの参照元であるa.txtが存在するのでTrueが返る

# b_link.txt
path_4 = '/Users/test/blog/py_os_path/b_link.txt'
result_4 = os.path.exists(path_4)
print(result_4) # b_link.txtの参照元であるb.txtが存在しないのでFalseが返る

ファイルの存在確認(os.path.isfile)

ファイルの存在確認は、標準ライブラリos.pathモジュールのisfileメソッドを用います。

ファイルのパスが存在する場合はTrueを返し存在しない場合はFalseを返します。シンボリックリンクの場合はその参照元を辿り存在すればTrueを返し、存在しなければFalseを返します。

os.path.isfile


import os

# ディレクトリ
path_1 = '/Users/test/blog/py_os_path/'
result_1 = os.path.isfile(path_1)
print(result_1) # py_os_pathはファイルではなくディレクトリなのでFalseが返る

# a.txt
path_2 = '/Users/test/blog/py_os_path/a.txt'
result_2 = os.path.isfile(path_2)
print(result_2) # a.txtは存在するのでTrueが返る

# b_link.txt
path_3 = '/Users/test/blog/py_os_path/b_link.txt'
result_3 = os.path.isfile(path_3)
print(result_6) # b_link.txtの参照元であるb.txtが存在しないのでFalseが返る

ディレクトリの存在確認(os.path.isdir)

次に、ディレクトリの存在確認です。ディレクトリの存在確認はPythonでは標準ライブラリos.pathモジュールのisdirメソッドを用います。

ディレクトリのパスが存在する場合はTrueを返し存在しない場合はFalseを返します。シンボリックリンクの場合はその参照元を辿り存在すればTrueを返し、存在しなければFalseを返します。

os.path.isdir


import os

# ディレクトリ
path_1 = '/Users/test/blog/py_os_path/'
result_1 = os.path.isdir(path_1)
print(result_1) # py_os_pathは存在するディレクトリなのでTrueが返る

# a.txt
path_2 = '/Users/test/blog/py_os_path/a.txt'
result_2 = os.path.isdir(path_2)
print(result_2) # a.txtはファイルなのでFalseが返る

応用

標準ライブラリos.pathモジュールのexistsisfileisdirの3つのメソッドを紹介しました。冒頭に記載した次のような環境で、簡単な応用をしてみます。

ディレクトリimgtest.jpgを保存する。
ディレクトリimgの存在確認し、ディレクトリimgがなければディレクトリを作成してtest.jpgを保存する。

matplotlibでグラフ画像を作成して保存する場合を想定してみます。

ちなみに、ディレクトリを作成するには標準ライブラリosモジュールのmakedirsメソッドを使います。


import os

import matplotlib.pyplot as plt
save_dir = '/Users/test/blog/py_os_path/img/'
file_name = 'test.jpg'
if not os.path.exists(save_dir):
    os.makedirs(save_dir)
plt.savefig(save_dir + file_name)
plt.close()

最後に

最後まで読んでいただきありがとうございます。Pythonはプログラム言語としてシンプルに作られていてとても覚えやすい言語です。業務で本格的に使うこともできす。データサイエンスや人工知能などのワクワクする分野ではほとんどPythonが使われているようです。MacでPythonの開発環境を整えて、その環境でPythonを学び勉強することはとても楽しいです。この記事が少しでもお役に立つと幸いです。

MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。

Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。

初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。

定番おすすめ記事

M1、M2のMacでPythonの開発環境を構築することや、分野別のライブラリのインストール方法を下記の記事でまとめています。ぜひご覧ください。

カテゴリー:
関連記事