18

Python(2.7以下でこれを試した)では、を使用して作成されたファイルtempfile.NamedTemporaryFileがumaskディレクティブに従っていないようです:

import os, tempfile
os.umask(022)
f1 = open ("goodfile", "w")
f2 = tempfile.NamedTemporaryFile(dir='.')
f2.name

Out[33]: '/Users/foo/tmp4zK9Fe'

ls -l
-rw-------  1 foo  foo  0 May 10 13:29 /Users/foo/tmp4zK9Fe
-rw-r--r--  1 foo  foo  0 May 10 13:28 /Users/foo/goodfile

NamedTemporaryFileumask を取得しない理由はありますか? ファイルの作成中にこれを行う方法はありますか?

os.chmod() でいつでもこれを回避できますが、ファイルの作成中に正しいことを行う何かを望んでいました。

4

2 に答える 2

39

これはセキュリティ機能です。はNamedTemporaryFile常にモードで作成され、行 2350600にハードコーディングされています。この動作を変更するコンストラクター引数はありません。tempfile.pychmod

于 2012-05-10T20:53:44.637 に答える