Как я могу получить права доступа к файлам по умолчанию в Python? - PullRequest
7 голосов
/ 22 августа 2011

Я пишу скрипт на Python, в котором я записываю вывод во временный файл, а затем перемещаю этот файл в конечный пункт назначения после его завершения и закрытия. Когда сценарий завершится, я хочу, чтобы выходной файл имел те же разрешения, как если бы он был создан с помощью open(filename,"w"). Как таковой, файл будет иметь ограниченный набор разрешений, используемых модулем tempfile для временных файлов.

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

Ответы [ 2 ]

3 голосов
/ 23 мая 2017

Для записи, у меня была похожая проблема, вот код, который я использовал:

import os
from tempfile import NamedTemporaryFile

def UmaskNamedTemporaryFile(*args, **kargs):
    fdesc = NamedTemporaryFile(*args, **kargs)
    umask = os.umask(0)
    os.umask(umask)
    os.chmod(fdesc.name, 0o666 & ~umask)
    return fdesc
2 голосов
/ 22 августа 2011

В модуле os есть функция umask.Вы не можете получить текущий umask как таковой, вы должны установить его, и функция вернет предыдущий параметр.

Umask наследуется от родительского процесса.Он описывает, какие биты не должны быть установлены при создании файла или каталога.

...