os.R_OK を使った os.access() の利用
このステップでは、Python の os.access()
関数を使って、ファイルが読み取り権限を持っているかどうかをチェックします。os.access()
関数は 2 つの引数を取ります。ファイルパスと権限フラグです。読み取り権限をチェックするために os.R_OK
を使用します。
まず、~/project
ディレクトリに check_permissions.py
という名前の新しい Python ファイルを作成しましょう。VS Code エディタを開き、以下のコードをファイルに追加します。
import os
file_path = "my_script.py"
## Check if the file exists
if not os.path.exists(file_path):
print(f"Error: The file '{file_path}' does not exist.")
else:
## Check if the file has read permissions
if os.access(file_path, os.R_OK):
print(f"The file '{file_path}' has read permissions.")
else:
print(f"The file '{file_path}' does not have read permissions.")
ファイルを保存します。このスクリプトはまず、my_script.py
ファイルが存在するかどうかをチェックします。存在する場合、os.access()
と os.R_OK
を使って、ファイルが読み取り権限を持っているかどうかをチェックします。スクリプトは、ファイルが読み取り権限を持っているかどうかを示すメッセージを出力します。
次に、ターミナルからスクリプトを実行しましょう。
python check_permissions.py
以下の出力が表示されるはずです。
The file 'my_script.py' has read permissions.
これは、デフォルトで my_script.py
ファイルが所有者、グループ、およびその他のユーザーに対して読み取り権限を持っているからです。
次に、my_script.py
ファイルの権限を変更して、所有者以外の全員の読み取り権限を削除しましょう。これは、ターミナルで chmod
コマンドを使用して行うことができます。
chmod 600 my_script.py
このコマンドは、my_script.py
の権限を所有者のみに読み取りと書き込み権限に設定します(8 進数表記で 600)。
再度、check_permissions.py
スクリプトを実行しましょう。
python check_permissions.py
今度は以下の出力が表示されるはずです。
The file 'my_script.py' does not have read permissions.
これは、グループとその他のユーザーの読み取り権限を削除したからです。os.access()
関数は、スクリプトを実行しているユーザー(labex
)に対してファイルがもはや読み取り権限を持っていないことを正しく識別します。
最後に、my_script.py
ファイルの元の権限を復元しましょう。
chmod 644 my_script.py
このコマンドは、my_script.py
の権限を所有者に読み取りと書き込み権限、グループとその他のユーザーに読み取り専用権限に設定します(8 進数表記で 644)。