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

Python проверяет, существует ли файл

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

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

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

Проверить, существует ли файл

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

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

 try : f = open ( "filename.txt" ) # Do something with the file except IOError : print ( "File not accessible" ) finally : f . close ()

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

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

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

 try : with open ( '/etc/hosts' ) as f : print ( f . readlines ()) # Do something with the file except IOError : print ( "File not accessible" )

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

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

Проверка существования файла с помощью модуля os.path

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

В контексте данного руководства наиболее важными функциями являются:

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

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

 import os.path if os . path . isfile ( 'filename.txt' ): print ( "File exist" ) else : print ( "File not exist" )

Используйте этот метод, когда вам нужно проверить, существует ли файл, перед выполнением какого-либо действия с ним. Например, перед копированием или удалением файла .

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

Проверьте, существует ли файл, используя модуль pathlib

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

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

 from pathlib import Path if Path ( 'filename.txt' ) . is_file (): print ( "File exist" ) else : print ( "File not exist" )

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

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

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

 pip install pathlib2

Заключение

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

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

питон

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *