Python实现文件只读属性的设置与取消
作者:Commas.KM
这篇文章主要为大家详细介绍了Python如何实现设置文件只读与取消文件只读的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
一、使用os.chmod来设置文件只读属性
我们可以使用 os 模块中的chmod(全程:change mode)来设置或取消文件的只读属性。
完整语法:
def chmod(path: FileDescriptorOrPath, mode: int,*, dir_fd: int | None = None, follow_symlinks: bool = True) -> None: ...
常见语法:
def chmod(path: FileDescriptorOrPath, mode: int)
- path:需要修改只读属性的文件路径或目录路径;
- mode:权限代码,由八进制数字(octat)组成。如0o444表示只读的权限,0o666表示“读写”的权限,0o777表示读写执行的权限等等。
使用方法:
- 引入os模块;
- 使用os.chmod()方法去设置或取消文件的只读属性;
- 将文件路径和权限代码传递os.chmod()方法
示例如下:
import os
# set file as read-only
# 4 = read(4)
os.chmod('readonly.txt', 0o444)
# cancel read-only property
# 6 = read(4) + write(2)
os.chmod('readonly.txt', 0o666)
# set file as read-write-execute
# 7 = read(4) + write(2) + execute(1)
os.chmod('readonly.txt', 0o777)当然,您也可以这样写:
import os,stat
# (1)set file as read-only
# 4 = read(4)
# os.chmod('readonly.txt', 0o444)
os.chmod('readonly.txt', stat.S_IRUSR + stat.S_IRGRP + stat.S_IROTH)
# (2)cancel read-only property
# 6 = read(4) + write(2)
# os.chmod('readonly.txt', 0o666)
os.chmod('readonly.txt', stat.S_IWUSR + stat.S_IRUSR + stat.S_IWGRP + stat.S_IRGRP + stat.S_IWOTH + stat.S_IROTH)
# (3)set file as read-write-execute
# 7 = read(4) + write(2) + execute(1)
# os.chmod('readonly.txt', 0o777)
os.chmod('readonly.txt', stat.S_IXUSR + stat.S_IWUSR + stat.S_IRUSR + stat.S_IXGRP + stat.S_IWGRP + stat.S_IRGRP + stat.S_IXOTH + stat.S_IWOTH + stat.S_IROTH)
# 或
os.chmod('readonly.txt', stat.S_IRWXU + stat.S_IRWXG + stat.S_IRWXO)
# 我们可以打印出来看看
# 0o444
print(oct(stat.S_IRUSR + stat.S_IRGRP + stat.S_IROTH))
# 0o666
print(oct(stat.S_IWUSR + stat.S_IRUSR + stat.S_IWGRP + stat.S_IRGRP + stat.S_IWOTH + stat.S_IROTH))
# 0o777
print(oct(stat.S_IXUSR + stat.S_IWUSR + stat.S_IRUSR + stat.S_IXGRP + stat.S_IWGRP + stat.S_IRGRP + stat.S_IXOTH + stat.S_IWOTH + stat.S_IROTH))
print(oct(stat.S_IRWXU + stat.S_IRWXG + stat.S_IRWXO))结果输出:
0o444
0o666
0o777
0o777
二、关于权限代码mode的解读

如上图所示,文件调用权限分为三级 :
- 文件所有者(Owner/Users)
- 用户组用户(Group Users)
- 其它用户(Other Users)
其中,每级权限代码范围:1~7。
符号含义:
- R:读,Read的缩写,八进制值为 4;
- W:写,Write的缩写,八进制值为 2;
- X:执行,Execute的缩写,八进制值为 1;
如:0o444表示只读的权限,0o666表示“读写”的权限,0o777表示读写执行的权限等等;
文件所有者(User)的权限:
| 限代码 | 英文名 | 说明 |
|---|---|---|
| stat.S_IXUSR | Execute User | 拥有者具有执行权限0o100 |
| stat.S_IWUSR | Write User | 拥有者具有写权限0o200 |
| stat.S_IRUSR | Read User | 拥有者具有读权限0o400 |
| stat.S_IRWXU | Read Write Execute User | 拥有者有全部权限(权限掩码)0o700 |
文件用户组(Group)的权限:
| 权限代码 | 英文名 | 说明 |
|---|---|---|
| stat.S_IXGRP | Execute Group | 组用户有执行权限0o010 |
| stat.S_IWGRP | Write Group | 组用户有写权限0o020 |
| stat.S_IRGRP | Read Group | 组用户有读权限0o040 |
| stat.S_IRWXG | Read Write Execute Group | 组用户有全部权限(权限掩码)0o070 |
其它:
| 权限代码 | 说明 |
|---|---|
| stat.S_ISVTX | 目录里文件目录只有拥有者才可删除更改0o1000 |
| stat.S_ISGID | 执行此文件其进程有效组为文件所在组0o2000 |
| stat.S_ISUID | 执行此文件其进程有效用户为文件所有者0o4000 |
| stat.S_IREAD | windows下设为只读 |
| stat.S_IWRITE | windows下取消只读 |
到此这篇关于Python实现文件只读属性的设置与取消的文章就介绍到这了,更多相关Python文件只读内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
