Как проверить, существует ли файл без исключений?

Это со мной работало:

(-?[0-9]+(\.[0-9]+)?)

Группа 1 - это ваш номер с плавающей точкой, а группа 2 - только фракция.

5175
задан Pika the Wizard of the Whales 5 November 2018 в 17:50
поделиться

7 ответов

import os.path

if os.path.isfile(filepath):
575
ответ дан abc 5 November 2018 в 17:50
поделиться

Если причина, которую Вы проверяете, так, можно сделать что-то как if file_exists: open_it(), более безопасно использовать try вокруг попытки открыть его. Проверка и затем открытие рискуют файлом, удаляемым или перемещенным или что-то между тем, когда Вы проверяете и когда Вы пытаетесь открыть его.

, Если Вы не планируете открыть файл сразу, можно использовать os.path.isfile

Возврат True, если путь является существующим регулярным файлом. Это переходит по символьным ссылкам, таким образом, оба образовывание остров () и isfile () может быть верным для того же пути.

import os.path
os.path.isfile(fname) 

, если необходимо быть уверены, что это - файл.

Запуск с Python 3.4, pathlib модуль предложения объектно-ориентированный подход (бэкпортированный к [1 110] в 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 блок:

try:
    my_abs_path = my_file.resolve(strict=True)
except FileNotFoundError:
    # doesn't exist
else:
    # exists
4784
ответ дан Georgy 5 November 2018 в 17:50
поделиться

В отличие от этого isfile() , exists() возвратится True для каталогов.
Так в зависимости от того, если Вы хотите только простые файлы или также каталоги, Вы будете использовать isfile() или exists(). Вот простой вывод REPL.

>>> print os.path.isfile("/etc/password.txt")
True
>>> print os.path.isfile("/etc")
False
>>> print os.path.isfile("/does/not/exist")
False
>>> print os.path.exists("/etc/password.txt")
True
>>> print os.path.exists("/etc")
True
>>> print os.path.exists("/does/not/exist")
False
911
ответ дан Aaron Hall 5 November 2018 в 17:50
поделиться

Кроме того, os.access():

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()

Являющийся R_OK, W_OK, и X_OK флаги для тестирования на полномочия ( документ ).

35
ответ дан armatita 5 November 2018 в 17:50
поделиться

Вы имеете os.path.exists функция:

import os.path
os.path.exists(file_path)

Это возвращается True и для файлов и для каталогов, но можно вместо этого использовать

os.path.isfile(file_path)

, чтобы протестировать, если это - файл конкретно. Это следует за символьными ссылками.

1975
ответ дан Community 5 November 2018 в 17:50
поделиться
import os
os.path.exists(path) # Returns whether the path (directory or file) exists or not
os.path.isfile(path) # Returns whether the file exists or not
265
ответ дан Peter Mortensen 5 November 2018 в 17:50
поделиться

Prefer the try statement. It's considered better style and avoids race conditions.

Don't take my word for it. There's plenty of support for this theory. Here's a couple:

124
ответ дан 22 November 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: