Python - разница между os.access и os.path.exists? - PullRequest
17 голосов
/ 02 августа 2010
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, а также существование пути, но есть ли небольшая разница?отсутствует здесь между этими двумя реализациями?

Ответы [ 2 ]

13 голосов
/ 02 августа 2010

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

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

4 голосов
/ 02 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...