2009-10-26 17 views
9

私はフォルダを作成してその中にファイルを作成しようとしています。Python mkdirが私に間違ったアクセス許可を与える

私はそのフォルダを(Python経由で)作成するたびに、アクセス権を全く持たないフォルダと読み取り専用モードを作成します。

ファイルを作成しようとすると、IOErrorが発生します。

他のすべてのモード(0770以外)の説明を作成(検索)してみました。

誰も私に光を与えることができますか?他のモードコードは何ですか?

+0

アクセス権のないパスにファイルを作成しようとしていますか? – jldupont

+0

あなたのumaskは何ですか? – ephemient

答えて

18

あなたはあなたがそれをバイナリに変換する場合は、最初のrwxが所有者のためである

000 111 111 000 
    rwx rwx rwx 

になり、MODがベース8で書かれているos.chmod

で権限を設定することができますフォルダを作成した後、 、第二のグループのためのものであり、第三世界のため

R = X =

PERMISを実行し、書き込み= W、読み出されますあなたが最も頻繁に参照されているシオン
7読み取り/書き込み/実行 - /あなたはディレクトリは内容
6のリードを参照するために実行する必要があるあなたがos.chmodを使用する場合
4が読み取り専用

はそれが進表記を使用するのが最も理にかなって書きます はそう

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"タグ.. –

+0

彼はos.chmodを意味すると思います – RedGlyph

+0

男にもあてはまる例があります。* nix chmodと混同することがあります。 –

5

おそらくファンキーなumaskがあります。ディレクトリを作成する前にos.umask(0002)を試してください。

+0

umaskが777の場合、すべての許可ビットがゼロになります。あなたは000を意味するかもしれません。 002または022を使用する方が賢明かもしれません。 –

+0

/私はばかです。ありがとう。 –

3

ザ・Pythonのマニュアルは言う:

os.mkdir(path[, mode]) 

は数字モードモードとパスという名前のディレクトリを作成します。デフォルトモードは0777(8進数)です。一部のシステムでは、モードは無視されます。使用されている場合は、現在のumask値が最初にマスクされます。可用性:Unix、Windows。

指定したモード - どのモードを指定しましたか?明示的にモードを指定することを検討しましたか?プログラムのumask値は "

1

に設定されていますので、Windowsの場合、これはひどいことかもしれません。親ディレクトリやアクセス許可を定義するポリシー設定あなたのアカウントによって作成されます。私はこれがPythonの問題であるとは思っていません。これは、比較的バニラのVistaをインストールしてWindowsで問題を再現できなかったためです。

関連する問題