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

12 set 2022 2 min di lettura
Как проверить существование файла или папки с помощью Python
Indice dei contenuti

Введение

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

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

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

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

Самый простой способ проверить, существует ли файл, — попытаться открыть файл. Этот подход не требует импорта каких-либо модулей и работает с Python 2 и 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, вы также можете использовать al 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 является каталогом или символической ссылкой на каталог.

Следующий код проверит, существует ли файл 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.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.