Проверка наличия файла или каталога по указанному пути
Бывает, что надо проверить корректность введенного пользователем адреса файла или каталога. Сделать это можно с помощью функции os.path.exists , которая возвращает true , если объект файловой системы существует, и false – если нет.
Функция os.path.isfile проверяет, является ли объект файлом, а os.path.isdir — является ли каталогом.
В приведенном ниже скрипте проверяется наличие объекта по указанному пользователем адресу, после этого проверяется файл это или каталог. В зависимости от типа объекта выводится информация.
# Скрипт проверяет наличие пути. # Если файл, то выводит его размер, даты создания, открытия и модификации. # Если каталог, выводит список вложенных в него файлов и каталогов. import os import datetime test_path = input('Введите адрес: ') if os.path.exists(test_path): if os.path.isfile(test_path): print('ФАЙЛ') print('Размер:', os.path.getsize(test_path) // 1024, 'Кб') print('Дата создания:', datetime.datetime.fromtimestamp( int(os.path.getctime(test_path)))) print('Дата последнего открытия:', datetime.datetime.fromtimestamp( int(os.path.getatime(test_path)))) print('Дата последнего изменения:', datetime.datetime.fromtimestamp( int(os.path.getmtime(test_path)))) elif os.path.isdir(test_path): print('КАТАЛОГ') print('Список объектов в нем: ', os.listdir(test_path)) else: print('Объект не найден')
В скрипте также используются функции os.path.getsize (возвращает размер файла), os.path.getctime (время создания), os.path.getatime (время последнего открытия), os.path.getmtime (дата последнего изменения). Метод datetime.datetime.fromtimestamp позволяет выводить время в местном формате.
В скрипте также используются функции os.path.getsize (возвращает размер файла), os.path.getctime (время создания), os.path.getatime (время последнего открытия), os.path.getmtime (дата последнего изменения). Метод datetime.datetime.fromtimestamp позволяет выводить время в местном формате.
Примеры выполнения программы:
Введите адрес: /home/pl/test.py ФАЙЛ Размер: 2 Кб Дата создания: 2021-10-14 19:55:58 Дата последнего открытия: 2022-04-21 08:21:00 Дата последнего изменения: 2021-10-14 19:55:58
Введите адрес: /home/pl/pas КАТАЛОГ Список объектов в нем: ['vk', 'theory', 'tasks']
Определение существования пути средствами pathlib
Описанные ниже методы позволяют определить существования пути, а так же тип указанного пути в файловой системе. Данные методы принадлежат экземпляру, созданному из класса Path() .
Так как класс pathlib.Path() наследуется от класса pathlib.PurePath() , следовательно он поддерживает все операции по манипуляции с путями файловой системы.
Смотрите другие методы и свойства, доступные экземпляру класса Path() модуля pathlib .
Содержание:
- Проверить существование какого либо пути.
- Проверить наличие каталога.
- Проверить наличие файла.
- Проверить наличие соединения.
- Проверить наличие точки монтирования ФС.
- Проверить наличие символической ссылки.
- Проверить наличие сокета Unix.
- Проверить наличие устройства FIFO.
- Проверить наличие блочного устройства.
- Проверить наличие символьного устройства.
Path.exists(*, follow_symlinks=True) :
Метод Path.exists() проверяет существование пути path файловой системы. Другими словами, указывает ли путь к существующему файлу или каталогу.
Этот метод обычно следует по символическим ссылкам. Для проверки существования символической ссылки, а не конечного файла, нужно добавить аргумент follow_symlinks=False (добавлен в Python 3.12).
>>> from pathlib import Path >>> Path('.').exists() # True >>> Path('setup.py').exists() # True >>> Path('/etc').exists() # True >>> Path('nonexistentfile').exists() # False
Примечание. Если путь path указывает на символическую ссылку, то метод Path.exists() возвращает информацию о том, указывает ли символическая ссылка на существующий файл или каталог.
Изменено в Python 3.12: добавлен аргумент follow_symlinks .
Path.is_dir() :
Метод Path.is_dir() вернет True , если путь path указывает на каталог, или символическую ссылку, указывающую на каталог. Метод вернет False если путь указывает на файл другого типа.
Значение False также возвращается, если путь не существует или является неработающей символической ссылкой. Метод может вернуть False при отсутствии доступа к директории или символической ссылке, указывающей на директорию.
>>> from pathlib import Path >>> Path('/some/to/directory').is_dir() # True >>> Path('/some/to/file.ext').is_dir() # False >>> Path('/some/to/symlink').is_dir() # False
Path.is_file() :
Метод Path.is_file() вернет True , если путь path указывает на файл или символическую ссылку, указывающую на обычный файл. Метод вернет False , если путь указывает на файл другого типа.
Значение False также возвращается, если путь не существует или является неработающей символической ссылкой. Метод может вернуть False при отсутствии доступа к файлу или символической ссылке, указывающей на файл.
>>> from pathlib import Path >>> Path('/some/to/directory').is_file() # False >>> Path('/some/to/file.ext').is_file() # True >>> Path('/some/to/symlink').is_file() # False
Path.is_junction() :
Метод Path.is_junction() вернет True , если путь Path указывает на соединение, и значение False для любого другого типа файла.
В настоящее время только Windows поддерживает соединения.
Path.is_mount() :
Метод Path.is_mount() вернет True , если путь path является точкой монтирования в файловой системе, где смонтирована другая файловая система.
В POSIX метод проверяет, находится ли родительский путь path/.. на устройстве, отличном от path или path/.. и path указывают на однy и ту же ноду i-node на одном и том же устройстве — это должно определять точки монтирования для всех вариантов Unix и POSIX.
В Windows точкой монтирования считается корневая буква диска (например, c:\ ), общий ресурс UNC (например, \\server\share ) или подключенный каталог файловой системы.
Изменено в Python 3.12: добавлена поддержка Windows.
>>> from pathlib import Path >>> Path('/some/to/directory').is_mount() # False >>> Path('/some/to/mount').is_mount() # True >>> Path('/some/to/file.ext').is_mount() # False
Path.is_symlink() :
Метод Path.is_symlink() вернет True , если путь path указывает на символическую ссылку, иначе вернет False .
Значение False также возвращается, если путь path не существует. Метод может вернуть False при отсутствии доступа к символической ссылке.
>>> from pathlib import Path >>> Path('/some/to/directory').is_symlink() # False >>> Path('/some/to/file.ext').is_symlink() # False >>> Path('/some/to/symlink').is_symlink() # True
Path.is_socket() :
Метод Path.is_socket() вернет True , если путь path указывает на сокет Unix или символическую ссылку, указывающую на сокет Unix. Метод вернет False , если путь указывает на файл другого типа.
Значение False также возвращается, если путь не существует или является неработающей символической ссылкой. Метод может вернуть False при отсутствии доступа к сокету Unix или символической ссылке, указывающей на сокет.
Path.is_fifo() :
Метод Path.is_fifo() вернет True , если путь path указывает на FIFO или символическую ссылку, указывающую на FIFO. Метод вернет False , если путь указывает на файл другого типа.
Значение False также возвращается, если путь не существует или является неработающей символической ссылкой. Метод может вернуть False при отсутствии доступа к FIFO или символической ссылке, указывающей на FIFO.
Path.is_block_device() :
Метод Path.is_block_device() вернет True , если путь path указывает на блочное устройство или символическую ссылку, указывающую на блочное устройство. Метод вернет False , если путь указывает на файл другого типа.
Значение False также возвращается, если путь не существует или является неработающей символической ссылкой. Метод может вернуть False при отсутствии доступа к блочному устройству или символической ссылке, указывающей на блочное устройство.
Path.is_char_device() :
Метод Path.is_char_device() вернет True , если путь path указывает на символьное устройство или символическую ссылку, указывающую на символьное устройство. Метод вернет False , если путь указывает на файл другого типа.
Значение False также возвращается, если путь не существует или является неработающей символической ссылкой. Метод может вернуть False при отсутствии доступа к символьному устройству или символической ссылке, указывающей на символьное устройство.
- КРАТКИЙ ОБЗОР МАТЕРИАЛА.
- Класс pathlib.PurePath() и его подклассы
- Класс pathlib.Path() и его подклассы
- Манипуляции с путями файловой системы средствами pathlib
- Проверить наличие файла/каталога/ссылки и т.д. средствами pathlib
- Открытие файла, чтение и запись информации средствами pathlib
- Определение положения в файловой системе средствами pathlib
- Список файлов в папке/каталоге по шаблону средствами pathlib
- Создание/удаление файла/каталога или ссылки средствами pathlib
- Получение информации о файле/каталоге средствами pathlib
- Изменение режима доступа к файлу или каталогу средствами pathlib
- Переименование/замена файла или каталога средствами pathlib
- Преобразование объекта пути pathlib в строку
- Метод walk() модуля pathlib, рекурсивный обход каталога
- Сравнение pathlib с модулями os и os.path
Как проверить, существует ли файл или каталог в Python


Добавить в избранное
Главное меню » Язык программирования Python » Как проверить, существует ли файл или каталог в Python
(1 оценок, среднее: 5,00 из 5)

При написании скриптов 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
Модуль 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
Модуль 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.
Как проверить существование файла или папки с помощью Python

При написании сценариев 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.
Supportaci se ti piacciono i nostri contenuti. Grazie.
Noviello.it Newsletter
Ricevi gli ultimi approfondimenti direttamente nella tua casella di posta!