Python os.access() Method



The Python os.access() method uses the real uid/gid to test for access to a path/folder. Linux assigns a UID (User Identifier) to each user on the system to identify which system resources they can access. GID (Group Identifier) is used to define groups in Linux.

This routine can be used in a suid/sgid environment to test whether the invoking user has the given access to path because most operations will use the effective uid/gid. It returns True if access is allowed, False if not.

Syntax

Following is the syntax of Python os.access() method −

os.access(path, mode);

Parameters

  • path − This is the path which would be tested for existence or any access.

  • mode − This should be F_OK to test the existence of path, or it can be the inclusive OR of one or more of R_OK, W_OK, and X_OK to test permissions.

    • os.F_OK − Value to pass as the mode parameter of access() to test the existence of path.
    • os.R_OK − Value to include in the mode parameter of access() to test the readability of path.
    • os.W_OK − Value to include in the mode parameter of access() to test the writability of path.
    • os.X_OK − Value to include in the mode parameter of access() to determine if path can be executed.

Return Value

This method returns True if access is allowed, False if not.

Example

The following example shows the usage of Python os.access() method. Here, we are passing the different path of files and its modes as an argument to the method.

import os, sys
# Assuming /tmp/foo.txt exists and has read/write permissions.
ret = os.access("/tmp/foo.txt", os.F_OK)
print ("F_OK - return value %s"% ret)
ret = os.access("/tmp/foo.txt", os.R_OK)
print ("R_OK - return value %s"% ret)
ret = os.access("/tmp/foo.txt", os.W_OK)
print ("W_OK - return value %s"% ret)
ret = os.access("/tmp/foo.txt", os.X_OK)
print ("X_OK - return value %s"% ret)

When we run above program, it produces following result −

F_OK - return value True
R_OK - return value True
W_OK - return value True
X_OK - return value False

Example

In the example given below the os.access() method is used to check if a user is authorized to write in a file. Here we first open the file using open() function. Then we write in it using write() function. Thereafter we close the file.

import os
# checking writability of the path
if os.access("code.txt", os.W_OK):
   with open("code.txt") as f:
      f = open('code.txt', 'w')
      words = "Welcome to tutorialspoint"
      x = f.write(words)
      f.close()
      print('Total characters written including spaces are:',x)
else:
   print("Something went wrong.")

While executing the above code we get the following output −

Total characters written including spaces are: 25

Example

In here, the os.access() method is used to determine whether the user is authorized to open the file after validating the access.

import os
# checking the readability of the path
if os.access("code.txt", os.R_OK):
	# opening the txt file as f
	with open("code.txt") as f:
		print (f.read())
else:
    # in case the file cannot be accessed
    print ("Something went wrong.")

Following is an output of the above code −

Welcome to tutorialspoint
os_file_methods.htm
Advertisements