Pythonでファイルをダウンロードする処理の際に、既に対象のファイルが存在しているかどうかをチェックしたい時があります。os.path.exists()関数は、そんな時に便利です。
本記事では、この関数を使ってフォルダやファイルが存在していることを確認するための方法についてまとめます。またこれに加えて、指定したパスがファイルなのかフォルダなのかを判別するメソッド(isfile, isdir)についてもまとめます。
確認した環境
- OS: Ubuntu 16.04LTS
- Python: ver3.6.4
フォルダ構成の例
以下のフォルダ構成を例にして解説していきます。下記の’sample_1’はフォルダでなく拡張子無しのファイルです。
#カレントディレクトリの絶対パス
$ pwd
/home/hibikisan/rensyu/testdir
#testdirフォルダの中身
$ tree
tree
.
├── sample
│ ├── file0.txt
│ └── subdir01
│ └── file1.txt
├── sample_1 # ファイル(拡張子無し)
├── sample_2.txt
└── sample_3.py
ファイルやフォルダの存在を確認する
ファイルやフォルダが存在するかを確認するには、os.path.exists()関数を使います。基本的な書式は以下です。
os.path.exists(path)
pathで指定したフォルダやファイルが存在すればTrue、しなければFalseを返却します。
>>> import os
>>> path = '/home/hibikisan/rensyu/testdir'
#指定のフォルダが存在している場合はTrue
>>> os.path.exists(path)
True
#ファイルも設定できます
>>> os.path.exists(os.path.join(path, 'sample_2.txt'))
True
#存在しないファイルまたはフォルダの場合はFalse
>>> os.path.exists(os.path.join(path, 'not_exist.txt'))
False
ファイルの存在を確認する
ファイルの存在を確認するには、os.path.isfile()関数を使います。
os.path.isfile(path)
pathが存在して、それがファイルであればTure、異なっていればFalseを返却します。
>>> path = '/home/hibikisan/rensyu/testdir'
#ファイルだとTrueを返す
>>> os.path.isfile(os.path.join(path, 'sample_1'))
True
#フォルダだとfalseを返す
>>> os.path.isfile(os.path.join(path, 'sample'))
False
フォルダの存在を確認する
フォルダの存在を確認するには、os.path.isdir()関数を使います。
os.path.isdir(path)
pathが存在して、それがフォルダであればTure、異なっていればFalseを返却します。
path ='/home/hibikisan/rensyu/testdir'
#ファイルだとfalseを返す
>>> os.path.isdir(os.path.join(path, 'sample_1'))
False
#フォルダだとTrueを返す
>>> os.path.isdir(os.path.join(path, 'sample'))
True
まとめ
フォルダやファイルの存在を確認する方法として、以下についてまとめました。
- 指定したフォルダやファイルが存在しているかどうかを確認する → os.path.exists()関数
- 指定したパスがファイルかどうかを確認する → os.path.isfile()関数
- 指定したパスがフォルダかどうかを確認する → os.path.isdir()関数