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