Поиск по сайту:
Книга, над которой зеваешь, не вредит никому (Д. Дидро).

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

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
24.05.2019
Как проверить, существует ли файл или каталог в Python

При написании скриптов Python вы можете захотеть выполнить определенное действие, только если файл или каталог существует или нет. Например, вы можете захотеть прочитать или записать данные в файл конфигурации или создать файл, только если он уже не существует.

В Python есть много разных способов проверить, существует ли файл и определить тип файла.

В этой статье мы покажем вам три различных метода проверки наличия файла.

 

Самый простой способ проверить, существует ли файл, состоит в том, чтобы попытаться открыть файл. Этот подход не требует импорта какого-либо модуля и работает с Python 2 и 3. Используйте этот метод, если вы хотите открыть файл и выполнить какое-либо действие.

В следующем фрагменте мы используем простой блок try-except. Мы пытаемся открыть файл, filename.txt и если файл не существует, он выдаст исключение и выведет «Файл недоступен».

try:
    f = open("filename.txt")
    # Сделайте что-нибудь с файлом
except IOError:
    print("Файл недоступен")
finally:
    f.close()

Если вы используете Python 3, вы также можете использовать FileNotFoundError вместо IOError.

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

Следующий код эквивалентен предыдущему примеру:

try:
    with open('/etc/hosts') as f:
        print(f.readlines())
        # Сделайте что-нибудь с файлом
except IOError:
    print("Файл недоступен")

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

Например, если вы проверите существование файла, другой процесс может создать, удалить или заблокировать файл в промежутке времени между проверкой и открытием файла. Это может привести к поломке вашего кода.

 

Модуль os.path предоставляет некоторые полезные функции для работы с путевыми именами. Модуль доступен для Python 2 и 3.

В контексте этой статьи наиболее важными функциями являются:

  • os.path.exists(path) – Возвращает true, если path это файл, каталог или действительная символическая ссылка.
  • os.path.isfile(path) – Возвращает true, если path это обычный файл или символическая ссылка на файл.
  • os.path.isdir(path) – Возвращает true, если path это каталог или символическая ссылка на каталог.

Следующий код проверит, существует ли файл filename.txt:

import os.path

if os.path.isfile('filename.txt'):
    print ("Файл существует")
else:
    print ("Файл не существует")

Используйте этот метод, если вы хотите проверить, существует ли файл или нет. Если вы хотите выполнить действие с файлом, используйте предыдущий метод.

 

Модуль pathlib доступен в Python 3.4 и выше. Этот модуль предоставляет объектно-ориентированный интерфейс для работы с путями файловой системы для разных операционных систем.

Как и в предыдущем примере, следующий код проверит, существует ли файл filename.txt:

from pathlib import Path

if Path('filename.txt').is_file():
    print ("Файл существует")
else:
    print ("Файл не существует")

is_file возвращает true, если path это обычный файл или символическая ссылка на файл. Если вы хотите проверить каталог, используйте метод is_dir.

Основное различие между pathlib и os.path заключается в том, что pathlib вы можете работать с путями в виде объектов Path с соответствующими методами и атрибутами вместо обычных объектов str.

Если вы хотите использовать этот модуль в Python 2, вы можете установить его с помощью pip :

pip install pathlib2

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

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

Теперь редакторы в курсе.