python - How do I check whether a file exists without exceptions?

ID : 121293

viewed : 33

Tags : pythonfilefile-existspython

Top 5 Answer for python - How do I check whether a file exists without exceptions?

vote vote

90

If the reason you're checking is so you can do something like if file_exists: open_it(), it's safer to use a try around the attempt to open it. Checking and then opening risks the file being deleted or moved or something between when you check and when you try to open it.

If you're not planning to open the file immediately, you can use os.path.isfile

Return True if path is an existing regular file. This follows symbolic links, so both islink() and isfile() can be true for the same path.

import os.path os.path.isfile(fname)  

if you need to be sure it's a file.

Starting with Python 3.4, the pathlib module offers an object-oriented approach (backported to pathlib2 in Python 2.7):

from pathlib import Path  my_file = Path("/path/to/file") if my_file.is_file():     # file exists 

To check a directory, do:

if my_file.is_dir():     # directory exists 

To check whether a Path object exists independently of whether is it a file or directory, use exists():

if my_file.exists():     # path exists 

You can also use resolve(strict=True) in a try block:

try:     my_abs_path = my_file.resolve(strict=True) except FileNotFoundError:     # doesn't exist else:     # exists 
vote vote

83

Use os.path.exists to check both files and directories:

import os.path os.path.exists(file_path) 

Use os.path.isfile to check only files (note: follows symlinks):

os.path.isfile(file_path) 
vote vote

75

Unlike isfile(), exists() will return True for directories. So depending on if you want only plain files or also directories, you'll use isfile() or exists(). Here is some simple REPL output:

>>> os.path.isfile("/etc/password.txt") True >>> os.path.isfile("/etc") False >>> os.path.isfile("/does/not/exist") False >>> os.path.exists("/etc/password.txt") True >>> os.path.exists("/etc") True >>> os.path.exists("/does/not/exist") False 
vote vote

70

import os  if os.path.isfile(filepath):    print("File exists") 
vote vote

58

Use os.path.isfile() with os.access():

import os  PATH = './file.txt' if os.path.isfile(PATH) and os.access(PATH, os.R_OK):     print("File exists and is readable") else:     print("Either the file is missing or not readable") 

Top 3 video Explaining python - How do I check whether a file exists without exceptions?

Related QUESTION?