Как проверить, существует ли файл на Python

Jinku Hu 30 Январь 2023 18 Апрель 2020
  1. try...except для проверки существования файла (>=Python 2.x)
  2. os.path.isfile() для проверки существования файла (>=Python 2.x)
  3. pathlib.Path.is_file() чтобы проверить существует ли файл (>=Python 3.4)
Как проверить, существует ли файл на Python

В этом уроке будут представлены три различных решения для проверки существования файла на Python.

  1. Блок try...except для проверки существования файла (>=Python 2.x).
  2. Функция os.path.isfile для проверки существования файла (>=Python 2.x).
  3. pathlib.Path.is_file()проверка существования файла (>=Python 3.4)

try...except для проверки существования файла (>=Python 2.x)

Мы можем попробовать открыть файл и проверить, существует ли файл или нет, в зависимости от того, будет ли брошена IOError (на Python 2.x) или FileNotFoundError (на Python 3.x) или нет.

def checkFileExistance(filePath):
    try:
        with open(filePath, 'r') as f:
            return True
    except FileNotFoundError as e:
        return False
    except IOError as e:
        return False

В приведённых выше примерах мы делаем Python 2/3 совместимым, перечисляя FileNotFoundError и IOError в части исключения catching.

os.path.isfile() для проверки существования файла (>=Python 2.x)

import os
fileName = r"C:\Test\test.txt"
os.path.isfile(fileName)

Проверяет, существует ли fileName.

Предупреждение

Некоторые разработчики предпочитают использовать os.path.exists() для проверки существования файла. Но он не может определить, является ли объект файлом или каталогом.

import os
fileName = r"C:\Test\test.txt"
os.path.exists(fileName)
#Out: True
fileName = r"C:\Test"
os.path.exists(fileName)
#Out: True

Поэтому, используйте os.path.isfile только в том случае, если хотите проверить, существует ли файл.

pathlib.Path.is_file() чтобы проверить существует ли файл (>=Python 3.4)

Начиная с Python 3.4, в модуле pathlib вводится объектно-ориентированный метод для проверки существования файла.

from pathlib import Path

fileName = r"C:\Test\test.txt"
fileObj = Path(fileName)
fileObj.is_file()

Аналогичным образом, он также имеет методы is_dir() и exists() для проверки, существует ли каталог или файл/каталог.

Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

Сопутствующая статья - Python File