Подтвердить что ты не робот

Python - разница между os.access и os.path.exists?

def CreateDirectory(pathName):
    if not os.access(pathName, os.F_OK):
        os.makedirs(pathName)

против

def CreateDirectory(pathName):
    if not os.path.exists(pathName):
        os.makedirs(pathName)

Я понимаю, что os.access немного более гибкий, так как вы можете проверить атрибуты RWE, а также существование пути, но есть ли какая-то тонкая разница между этими двумя реализациями?

4b9b3361

Ответ 1

Лучше просто поймать исключение, а не пытаться его предотвратить. Есть два миллиона причин, по которым makedirs могут терпеть неудачу

def CreateDirectory(pathName):
    try:
        os.makedirs(pathName)
    except OSError, e:
        # could be that the directory already exists
        # could be permission error
        # could be file system is full
        # look at e.errno to determine what went wrong

Чтобы ответить на ваш вопрос, os.access может проверить разрешение на чтение или запись файла (как зарегистрированного пользователя). os.path.exists просто говорит вам, есть что-то там или нет. Я ожидаю, что большинство людей будут использовать os.path.exists для проверки наличия файла, поскольку его легче запомнить.

Ответ 2

os.access проверяет, может ли доступ доступ к текущему пользователю os.path.exists проверяет, существует ли путь. os.access может возвращать False, даже если путь существует.