[파이썬] shutil과 권한 관리

Python provides a powerful module called shutil that allows us to perform various file and directory operations. In this blog post, we will explore how we can use shutil for managing file permissions or permissions associated with files and directories.

Checking File Permissions

To check the permissions of a file or directory, we can use the os module along with stat function. Here’s an example:

import os

file_path = '/path/to/file.txt'
permissions = os.stat(file_path)

print(f"Owner has read permission: {permissions.st_mode & 0o400 != 0}")
print(f"Owner has write permission: {permissions.st_mode & 0o200 != 0}")
print(f"Owner has execute permission: {permissions.st_mode & 0o100 != 0}")

In the above code snippet, we are checking the permissions of a file using the os.stat function. We extract the permissions using various bitwise operations (&).

Changing File Permissions

To change the permissions of a file or directory, we can use the chmod function from the os module. Here’s an example of changing the file permissions to read-only:

import os

file_path = '/path/to/file.txt'
file_permissions = stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH  # Read-only permissions

os.chmod(file_path, file_permissions)

In the above code snippet, we are setting the file permissions to read-only for the owner, group, and others using the bitwise OR operator (|).

Copying Files with Permissions

When using shutil for copying files or directories, we can preserve the permissions of the source file or directory using the copy2 function. Here’s an example:

import shutil

source_file = '/path/to/source.txt'
destination_file = '/path/to/destination.txt'

shutil.copy2(source_file, destination_file)

In the above code snippet, the copy2 function will copy the source file to the destination file while preserving its permissions.

Conclusion

Managing file permissions is essential in any application or project. The shutil module in Python along with the os module provides us with a convenient way to check and modify file permissions. Additionally, shutil allows us to preserve permissions while copying files or directories, maintaining the integrity of the permissions during the process.

With the combination of shutil and other Python modules, we can efficiently handle permission-related tasks and ensure secure file management in our applications.