How to check the permissions of a directory using Python?


When interacting and working with files and directories in Python, it often becomes necessary to check their permissions to determine and know what operations can be performed on them. Using the os module, you can conveniently check the permissions of a directory in Python. In this article, we will explore the topic of checking directory permissions and accomplish this task in a graded manner, using code examples for understanding the concepts along the way.

Before we begin, you better ensure that you have a basic understanding of Python concepts and have Python installation on your system.

Checking Directory Permissions

To check and verify the permissions of a directory in Python, follow these steps:

Step 1: Import the Required Module

We require to import the os module; it provides functions for interacting and working with the operating system, including operations like checking directory permissions.

import os

Step 2: Define a Function

Then, we define a function named check_directory_permissions that takes the directory path as a parameter.

def check_directory_permissions(directory_path):
   # Code to check permissions will go here

Step 3: Check Permissions

Within the check_directory_permissions function, we make use of the os.access() function to check the directory permissions.

def check_directory_permissions(directory_path):
   if os.access(directory_path, os.R_OK):
      print(f"Read permissions are granted for the directory: 
{directory_path}")
   else:
      print(f"Read permissions are not granted for the 
directory: {directory_path}")

   if os.access(directory_path, os.W_OK):
      print(f"Write permissions are granted for the directory: 
{directory_path}")
   else:
      print(f"Write permissions are not granted for the 
directory: {directory_path}")

   if os.access(directory_path, os.X_OK):
      print(f"Execute permissions are granted for the 
directory: {directory_path}")
   else:
      print(f"Execute permissions are not granted for the 
directory: {directory_path}")

In this code snippet, we deploy the os.access() function to check and verify three types of permissions: read (os.R_OK), write (os.W_OK), and execute (os.X_OK) permissions. The function returns True if the corresponding permission is given, and returns False otherwise.

Step 4: Test the Function

In order to test the check_directory_permissions function, you pass the path of the directory you want to check as an argument.

directory_path = "/path/to/directory"
check_directory_permissions(directory_path)

In the place of "/path/to/directory" put the actual directory path you want to check. The function will print and display messages indicating the status of the permissions.

If the above code is run with an earlier code snippet, for some particular directory we may obtain the following output

Read permissions are granted for the directory: 
/content/sample_data/
Write permissions are granted for the directory:
/content/sample_data/
Execute permissions are granted for the directory:
/content/sample_data/

Making Use of the os.access() function

Example

Here, first we use the os.access() function with the os.R_OK | os.W_OK | os.X_OK parameters to check whether all the read, write, and execute permissions are granted or given for the directory. If it is found that all permissions are granted, it prints a message indicating that it has been so. Else, it notifies that not all permissions have been granted.

import os
def check_directory_permissions(directory_path):
   if os.access(directory_path, os.R_OK | os.W_OK | os.X_OK):
      print(f"All permissions are granted for the directory: {directory_path}")
   else:
      print(f"Not all permissions are granted for the directory: {directory_path}")
directory_path = "/path/to/directory"
check_directory_permissions(directory_path)

Output

For some directory, the following output is obtained

All permissions are granted for the directory: 
/content/sample_data

Making Use of the os.stat() function

Example

In example here, we use the os.stat() function to retrieve the directory status, including its permissions. We gain access to the st_mode attribute of the returned os.stat_result object; it represents the file type and permissions as an integer. We then let bitwise operations check each permission individually. It prints a message showing if the read, write, and execute permissions are granted or not.

import os
def check_directory_permissions(directory_path):
   permissions = os.stat(directory_path).st_mode
   print(f"Permissions of the directory: {directory_path}")
   print(f"Read permission: {'Yes' if permissions & 0o400 
else 'No'}")
   print(f"Write permission: {'Yes' if permissions & 0o200 
else 'No'}")
   print(f"Execute permission: {'Yes' if permissions & 0o100 
else 'No'}")

directory_path = "/path/to/directory"
check_directory_permissions(directory_path)

Output

For some particular directory, the following output is obtained

Permissions of the directory: /content/sample_data
Read permission: Yes
Write permission: Yes
Execute permission: Yes

While working and interacting with file systems in Python, checking the permissions of a directory is an essential and necessary task. By using the os.access() and os.stat() functions from the os module, you can easily find the read, write, and execute permissions of a directory. You can further extend this functionality to fit your particular needs, such as performing different actions based on permissions. By learning from these code examples, you can easily determine the permissions of a directory and take proper actions based on the granted permissions.

It is better you remember to handle exceptions appropriately and ensure that you have the necessary permissions to access the directory so that it is possible to check its permissions successfully.

Now that you have understood how to check directory permissions in Python, you can confidently work with files and directories while taking permissions into consideration.

Updated on: 17-Jul-2023

7K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements