os.W_OK とともに os.access() を使用する
前のステップでは、ファイルの権限について学び、chmod
コマンドを使用してそれらを変更する方法を見ました。では、Python を使用してプログラム的にファイルが書き込み権限を持っているかどうかをチェックする方法を探ってみましょう。os.access()
関数と os.W_OK
定数を使うことで、これを行うことができます。
os.access()
関数は 2 つの引数を取ります。
path
: チェックしたいファイルまたはディレクトリのパス。
mode
: チェックしたい権限を表す整数。
os.W_OK
定数は書き込み権限を表します。os.access()
とともに使用すると、指定されたファイルまたはディレクトリが現在のユーザーによって書き込み可能かどうかをチェックします。
これを実証するために Python スクリプトを作成してみましょう。VS Code エディタを開き、~/project
ディレクトリに check_write_permission.py
という名前の新しいファイルを作成します。
ファイルに次のコードを追加します。
import os
file_path = "my_file.txt"
if os.access(file_path, os.W_OK):
print(f"The file '{file_path}' is writable.")
else:
print(f"The file '{file_path}' is not writable.")
このコードの動作は次の通りです。
- オペレーティングシステムとやり取りするための関数を提供する
os
モジュールをインポートします。
- チェックしたいファイルの名前(前のステップで作成した
my_file.txt
)を格納する変数 file_path
を定義します。
os.access(file_path, os.W_OK)
を使用して、ファイルが書き込み可能かどうかをチェックします。
- ファイルが書き込み可能かどうかを示すメッセージを出力します。
さて、スクリプトを実行してみましょう。ターミナルを開き、~/project
ディレクトリに移動します(すでにそこにいない場合)。
cd ~/project
次に、Python スクリプトを実行します。
python check_write_permission.py
前のステップで所有者の書き込み権限を削除したので、出力は次のようになるはずです。
The file 'my_file.txt' is not writable.
さて、ファイルに所有者の書き込み権限を戻しましょう。
chmod u+w my_file.txt
そして、Python スクリプトを再度実行します。
python check_write_permission.py
今度は、出力は次のようになるはずです。
The file 'my_file.txt' is writable.
これは、Python で os.access()
と os.W_OK
を使用してプログラム的に書き込み権限をチェックする方法を実証しています。これは、ファイルを変更する必要があるが、最初に必要な権限を持っていることを確認する必要があるプログラムを作成する際に便利です。