1. ホーム
  2. python

[解決済み] Pythonモジュール os.chmod(file, 664) は、パーミッションを rw-rw-r-- ではなく、-w--wx----- に変更しない。

2022-03-01 23:40:52

質問

最近、Pythonのモジュールosを使っているのですが、ファイルのパーミッションを変更しようとしたところ、期待した結果が得られません。例えば、私はパーミッションをrw-rw-r--に変更するつもりでした。

os.chmod("/tmp/test_file", 664)

所有権のパーミッションは、実際には -w--wx--- (230) です。

--w--wx--- 1 ag ag 0 Mar 25 05:45 test_file

しかし、コード内で664を0664に変更すると、結果は私が必要とするものと同じになります。

os.chmod("/tmp/test_file", 0664)

その結果、次のようになります。

-rw-rw-r-- 1 ag ag 0 Mar 25 05:55 test_file

どなたか、正しい結果を得るために、なぜ先頭の0が重要なのか、説明してください。

どのように解決するのですか?

で見つけました。 別のフォーラム

<ブロッククオート

なぜ先頭のゼロが重要なのかというと、それは パーミッションは8進数の整数で設定され、Pythonは自動的に は、先頭の0を含む整数を8進数として扱います。つまり、os.chmod("file", 484) (10進数)は同じ結果になります。

あなたがやっていることは 664 であり、8進数では 1230

あなたの場合、次のようになります。

os.chmod("/tmp/test_file", 436)


[更新】Python 3では、プレフィックスに0o(ゼロオー)が付くことに注意してください。) 例 0o666