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

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

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

Используйте try-except блок

Прежде всего, вместо того, чтобы проверять, существует ли файл, совершенно нормально открыть его напрямую и заключить все в try-except блок. Эта стратегия также известна как EAFP (Легче попросить прощения, чем разрешения) и является вполне приемлемым стилем кодирования Python.

try:
    f = open("filename.txt")
 except FileNotFoundError:
     # doesn’t exist
 else:
     # exists

Примечание. В Python 2 это была ошибка IOError .

Используйте os.path.isfile()os.path.isdir(), или os.path.exists()

Если вы не хотите вызывать исключение или вам даже не нужно открывать файл, а просто нужно проверить, существует ли он, у вас есть другие варианты. Первый способ заключается в использовании различных методов в os.path:

  • os.path.isfile(path): возвращает True, если путь является допустимым файлом
  • os.path.isdir(path): возвращает True, если путь является допустимым каталогом
  • os.path.exists(path): возвращает True, если путь является допустимым файлом или каталогом
import os

if os.path.isfile("filename.txt"):
    # file exists
    f = open("filename.txt")

if os.path.isdir("data"):
    # directory exists

if os.path.exists(file_path):
    # file or directory exists

 

Использовать Path.is_file() из pathlib модуля

Начиная с Python 3.4 вы можете использовать модуль pathlib . Он предлагает объектно-ориентированный подход к работе с путями файловой системы.

Вы можете создать такой Path объект:

from pathlib import Path

my_file = Path("/path/to/file")

Теперь вы можете использовать различные методы is_file()is_dir()и exists()для Path объекта:

if my_file.is_file():
    # file exists

if my_file.is_dir():
    # directory exists

if my_file.exists():
    # file or directory exists

 

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии