LINUX.ORG.RU

python: tempnam() vulnerable. Да здравствует кто?


0

0

Python.

Функции os.tempnam() и os.tmpnam() обозначены как потенциально опасные (при первом выполнении громко кричит RuntimeWarning).

В качестве замены рекомендуется os.tmpfile(), но поведение сей функции отличается коренным образом.

Мне нужно

1. Создать файл
2. Записать в него данные
3. Закрыть.


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

На мой взгляд (где-то вычитано когда-то), правильное решение - создать временный файл, заполнить его данными, закрыть, а потом переместить куда мне надо под нужным именем (потому что os.rename() - атомарная).

Что посоветует всезнающий All? Забить на ворнинг (как подавить вывод ворнинга, кстати?)?

★★★★★

1. можно делать lock на чтение параллельным процессом, пока файл не закрыт,
2. можно просто создавать сначала файл с точкой вначале (типа ".data"), писать в него, закрывать и потом переименовывать.

isden ★★★★★
()
Ответ на: комментарий от isden

п.2 - всмысле создавать временный файл как обычный.

isden ★★★★★
()
Ответ на: комментарий от isden

1. Натрахался я уже с этими локами по самое не могу.

2. Ну то есть своими силами имитировать поведение os.tempnam(). Так и буду, видимо...

AngryElf ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.