2

Djangoアプリケーションで、一時ファイルを作成します。この一時ファイルは、「0700」のアクセス許可で作成されます。ただし、一時ファイル(0700)のアクセス許可を保持せずに、その一時ファイルの名前を変更する必要がありますが、ファイルにユーザー(umask)のアクセス許可を取得させます。ファイルの権限を変更したくありません。

これは可能ですか?

サンプルコード:

import tempfile, os
content = "hello"
temp_fd, filename = tempfile.mkstemp(suffix=".tmp", prefix="test1", dir="/tmp")
with os.fdopen(temp_fd, "wb") as f:
        f.write(content)
os.rename(filename,"/home/user/testfile")
4

2 に答える 2

2
    # query current umask by replacing it
    old_umask = os.umask(0)

    # immediately restore the umask
    os.umask(old_umask)

    fd, tmp_file_path = tempfile.mkstemp(prefix='.%s.' % os.path.basename(self._file_path), dir=directory)

    # calculate the octal chmod and chmod the temp file
    octal_file_chmod = int('666', 8) & ~old_umask
    os.chmod(tmp_file_path, octal_file_chmod)
于 2015-11-13T21:25:45.963 に答える
0

shutil.moveアクセス許可を保持する必要がありますが、それがどのように実装されているかわかりません。おそらく と の組み合わせを使用する必要がshutil.copy2ありos.removeます。

于 2012-08-29T16:10:45.397 に答える