如何在Python中设置文件权限防止文件删除或设为只读?
防止文件被删除/设置为只读的Python实现方法
完全阻止文件被删除在常规系统权限下很难实现(管理员/root用户总能绕过限制),但设置为只读可以有效防止误修改和普通用户的删除操作。以下是基于os模块的跨平台实现方案:
Windows系统
在Windows上,你可以通过修改文件权限位或设置系统只读属性两种方式实现:
方式1:使用os和stat模块修改权限位
import os import stat file_path = "target_file.txt" # 获取当前文件权限 current_mode = os.stat(file_path).st_mode # 移除所有用户的写入权限 new_mode = current_mode & ~(stat.S_IWUSR | stat.S_IWGRP | stat.S_IWOTH) os.chmod(file_path, new_mode)
方式2:设置系统只读属性(更直观)
如果需要让文件在资源管理器中显示为"只读",可以借助pywin32库(需先安装:pip install pywin32):
import win32api import win32con file_path = "target_file.txt" # 获取当前文件属性 attrs = win32api.GetFileAttributes(file_path) # 添加只读属性 win32api.SetFileAttributes(file_path, attrs | win32con.FILE_ATTRIBUTE_READONLY)
类Unix系统(Linux/macOS)
类Unix系统的权限管理更直接,通过os.chmod设置文件为0o444(所有用户只读)即可:
import os file_path = "target_file.txt" # 设置所有者、组、其他用户均只读 os.chmod(file_path, 0o444) # 若后续需要恢复可读写权限,执行: # os.chmod(file_path, 0o644)
关键说明
- 权限限制的局限性:即便设置了只读,系统管理员/root用户仍可修改权限后删除文件,无法做到绝对不可删除。
- 执行权限要求:修改文件权限需要你拥有该文件的所有权,或具备管理员/root级别权限。
- 误操作恢复:如果需要取消只读,Windows可以移除
FILE_ATTRIBUTE_READONLY属性,类Unix系统重新设置可读写权限(如0o644)即可。
内容的提问来源于stack exchange,提问作者JosephMoraila
相关产品推荐
相关产品推荐

