2009-10-26 113 views
9

我試圖創建一個文件夾並在其中創建一個文件。Python mkdir給了我錯誤的權限

每當我創建該文件夾(通過Python),它會創建一個文件夾,它根本不給我任何權限和只讀模式。

當我嘗試創建文件時,我得到一個IOError。

Error: <type 'exceptions.IOError'> 

我試着創建(和搜索)所有其他模式(除了0770)的描述。

任何人都可以給我光明嗎?其他模式代碼是什麼?

+0

您是否試圖在您無權訪問的路徑中創建文件? – jldupont 2009-10-26 20:42:40

+0

你的umask是什麼? – ephemient 2009-10-26 20:46:47

回答

18

後創建的國防部是寫在基地8,如果你將其轉換爲二進制這將是

000 111 111 000 
    rwx rwx rwx 

第一rwx你可以用os.chmod

設置權限的文件夾所有者,第二個是用於組和第三是世界

R =讀,W =寫,X =執行

的PERMIS sions您最常看到的
7讀/寫/執行 - 你需要執行的目錄中看到的內容
6讀/寫
4只讀

當您使用os.chmod它最有意義使用八進制 所以

os.chmod('myfile',0o666) # read/write by everyone 
os.chmod('myfile',0o644) # read/write by me, readable for everone else 

還記得我說你平時想的目錄是「可執行文件」,這樣就可以看到內容。

os.chmod('mydir',0o777) # read/write by everyone 
os.chmod('mydir',0o755) # read/write by me, readable for everone else 

注:0o777語法爲Python 2.6和3+。否則對於2系列它是0777。 2.6接受這兩種語法,所以你選擇的語法將取決於你想要向前還是向後兼容。

+3

「windows」-tag .. – 2009-10-26 20:50:36

+0

我想他的意思是os.chmod – RedGlyph 2009-10-26 20:52:40

+0

也給這個人一個例子,它可以與* nix chmod混淆。 – 2009-10-26 20:55:35

5

你可能有一個時髦的umask。在製作您的目錄之前,請嘗試os.umask(0002)

+0

777的umask將確保所有權限位均爲零。你可能意味着000;使用002或022可能更明智。 – 2009-10-26 22:01:59

+0

/我是個白癡。謝謝。 – 2009-10-26 23:30:52

3

Python的手冊說:

os.mkdir(path[, mode]) 

創建一個命名爲數字模式模式路徑的目錄。默認模式是0777(八進制)。在某些系統上,模式被忽略。在使用它的地方,當前的umask值首先被屏蔽掉。可用性:Unix,Windows。

您是否指定了模式 - 您指定了哪種模式。你有沒有考慮明確指定一個模式?什麼是該程序的umask值設置爲「

1

既然你在Windows上,這可能是一個crapshoot。確保沒有任何古怪的父目錄或定義任何目錄權限的策略設置的特殊權限由您的帳戶創建獲取。我懷疑這是一個python問題,因爲我還沒有能夠在Vista上重新安裝Vista相關問題。