2011-08-22 55 views
3

我寫在我寫輸出到一個臨時文件,然後將該文件移動到其最終目的地,一旦結束,關閉一個Python腳本。腳本完成後,我希望輸出文件具有與通過open(filename,"w")正常創建的權限相同的權限。實際上,該文件將具有tempfile模塊用於臨時文件的限制性權限集。如何獲得Python中的默認文件權限?

有沒有一種辦法,我要弄清楚輸出文件的「默認」文件權限是什麼,如果我在的地方創建它,這樣我可以移動它之前,把它們應用到臨時文件?

+0

看一看這樣的:http://stackoverflow.com/questions/1861836/checking-file -permissions-in-linux-with-python – vettipayyan

+2

@vettipayyan:這個問題與此無關。 – hop

回答

2

有一個功能模塊umask in the os。你不能得到當前的umask本身,你必須設置它,並且函數返回以前的設置。

的umask是從父進程繼承。它描述了在創建文件或目錄時哪些位是而不是

+0

所以,我應該叫'os.umask'一次任意值,保存返回值,然後再使用該值調用它來恢復它,然後從面具,取得適當的權限? –

+0

爲什麼你只會對umask _is_而不是它應該是什麼感興趣呢? – hop

+0

你確定你需要使用'tempfile'嗎? – hop

1

爲了記錄在案,我也有類似的問題,這裏是我使用的代碼:

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