При определении того, существует или нет файл, как использование инструкции try исключает "условие гонки"?
Я спрашиваю, потому что высокий ответ (обновление: оно было удалено), по-видимому, подразумевает, что использование os.path.exists()
создает возможность, которая не существовала бы иначе.
Приведенный пример:
try:
with open(filename): pass
except IOError:
print 'Oh dear.'
Но я не понимаю, как это исключает условие гонки по сравнению с:
if not os.path.exists(filename):
print 'Oh dear.'
Как вызов os.path.exists(filename)
позволяет злоумышленнику что-то делать с файлом, который они еще не могли сделать?