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, а также соединить существование каналом, но являетесь там некоторым тонким различием, которое я пропускаю здесь между этими двумя реализациями?

17
задан user407896 2 August 2010 в 13:31
поделиться

2 ответа

Лучше просто поймать исключение, чем пытаться его предотвратить. Есть миллион причин, по которым 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 для проверки существования файла, так как его легче запомнить.

13
ответ дан 30 November 2019 в 14:05
поделиться

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

4
ответ дан 30 November 2019 в 14:05
поделиться
Другие вопросы по тегам:

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