How do I check whether a file exists without exceptions?
Как мне проверить, существует ли файл без исключений?
Как мне проверить, существует файл или нет, без использования оператора try?
Переведено автоматически
Ответ 1
Если причина, по которой вы проверяете, заключается в том, что вы можете сделать что-то вроде if file_exists: open_it(), безопаснее использовать try при попытке его открытия. При проверке и последующем открытии файл может быть удален или перемещен, или что-то среднее между проверкой и попыткой его открыть.
Если вы не планируете открывать файл немедленно, вы можете использовать os.path.isfile
Возвращает, True если path является существующим обычным файлом. Это следует символическим ссылкам, поэтому оба islink() и isfile() могут быть верны для одного и того же пути.
import os.path os.path.isfile(fname)
если вам нужно быть уверенным, что это файл.
Начиная с Python 3.4, pathlib модуль предлагает объектно-ориентированный подход (перенесенный в pathlib2 Python 2.7):
from pathlib import Path
my_file = Path("/path/to/file") if my_file.is_file(): # file exists
Чтобы проверить каталог, выполните:
if my_file.is_dir(): # directory exists
Чтобы проверить, существует ли Path объект независимо от того, является ли он файлом или каталогом, используйте exists():
if my_file.exists(): # path exists
Вы также можете использовать resolve(strict=True) в try блоке:
В отличие от isfile(), exists() будет возвращать True для каталогов. Итак, в зависимости от того, нужны ли вам только обычные файлы или также каталоги, вы будете использовать isfile() или exists(). Вот несколько простых результатов REPL: