Безопасно создайте файл, если и только если он не существует с python

Я хочу записать в файл, основываясь на том, существует ли этот файл или нет, только запись, если он еще не существует (на практике я хочу продолжать пробовать файлы, пока не найду тот, который не существует).

В следующем коде показан способ, которым потенциальный злоумышленник может вставить символическую ссылку, как предлагается вэта почта между проверкой файла и записываемого файла. Если код запускается с достаточно высокими разрешениями, это может перезаписать произвольный файл.

Есть ли способ решить эту проблему?

import os
import errno

file_to_be_attacked = 'important_file'

with open(file_to_be_attacked, 'w') as f:
    f.write('Some important content!\n')

test_file = 'testfile'

try:
    with open(test_file) as f: pass
except IOError, e:

    # symlink created here
    os.symlink(file_to_be_attacked, test_file)

    if e.errno != errno.ENOENT:
        raise
    else:
        with open(test_file, 'w') as f:
            f.write('Hello, kthxbye!\n')

Ответы на вопрос(3)

Ваш ответ на вопрос