python调用配置文件,下载python没有勾选环境变量
linux文件权限简介
在linux中,文件的权限分为‘所有者、组和其他用户’三种角色。每个角色用三位表示,3位从左到右执行三种读写权限。3位的取值范围是0~7。因此,如果直接在linux中执行chmod 777 xxx.sh,那么xxx.sh文件将被交给所有者、组和其他用户读写xxx.sh文件。
os的Chmod
python的os模块负责操作系统层面的操作。修改文件权限可以通过操作系统的chmod方法来完成。
os.chmod(路径,模式)
方法的路径指向要被授予权限的文件或目录;
Mode是权限值,即9位文件权限的十进制数,取值范围为0 ~ 511;
比如我们要给所有者xxx.sh文件读权限,而其他角色没有任何权限,那么在linux中对应的文件权限就会被查看为:-r-;第一个-是文件类型,后9位代表整个文件的权限,对应二进制数10000000,所以我们的模式应该是256;
所以上面的权限修改代码是os.chmod(xxx.sh ,256)。
这么麻烦?
幸运的是,stat模块提供了可以直接使用的常量值。
常数
形容
徐
所有者的读写执行权限,代表值:448
S_IRUSR
由所有者读取,代表值:256
S_IWUSR
所有者,代表值:128
S_IXUSR
所有者,代表值:64
S_IRWXG
用户组的读写执行权限,代表值:56
S_IRGRP
用户组读取,代表值:32
S_IWGRP
用户群,代表值:16
S_IXGRP
用户组执行,代表值:8
S_IRWXO
其他用户读写,代表值:7
斯罗斯
其他用户阅读,代表值:4
S_IWOTH
其他用户写的,代表值:2
S_IXOTH
由其他用户执行,代表值:1
下面的代码是把xxx.sh文件交给所有者读写,用户组读取,其他用户读取,即-rwxr-xr:
导入操作系统
进口统计
os.chmod(xxx.sh ,stat。S_IRWXU stat。S_IRGRP stat。S_IXGRP统计。S_IROTH)
什么?感觉不变记不住?还是不方便?
写一个类似chmod 777用法的util
进口re
导入操作系统
进口统计
RD,WD,XD=4,2,1
BNS=[研发、生产、销售]
MDS=[
[统计。S_IRUSR,统计。S_IRGRP,统计。S_IROTH],
[统计。S_IWUSR,统计。S_IWGRP,统计。S_IWOTH],
[统计。S_IXUSR,统计。S_IXGRP,统计。S_IXOTH]
]
def chmod(路径,模式):
if isinstance(mode,int):
mode=str(模式)
如果不是re.match(^[0-7]{1,3}$,模式):
引发异常(“模式不符合^[0-7]{1,3}$模式”)
mode=“{ 0:03 }”。格式(模式)
mode_num=0
对于midx,m处于枚举(模式):
对于bnidx,枚举中的bn(BNS):
if (int(m) bn) 0:
mode_num=MDS
os.chmod(路径,模式编号)
if __name__==__main__ :
Chmod(xxx.sh , 744) #744代表所有者的读写执行,组和其他权限都是只读。
同样,你也可以让它支持chmod urwx,grw,orwxxx.sh的用法。
注意:os.chmod好像没有办法递归修改目录中所有文件的权限?然后使用下面的子流程直接调用命令…
子进程直接调用chmod命令。
子流程模块实现子流程的操作。您可以调用操作系统命令或在子进程中执行shell,并获取stdout和stderr。
导入子流程
if __name__==__main__ :
cmd=[chmod ,-R , 777 , xxx.sh]
res=subprocess.run(cmd,universal_newlines=True,stdout=subprocess。管道,
stderr=子流程。管道,外壳=假)
print(res.returncode,res.stdout,res.stderr)
关于Python3通过chmod修改目录或文件权限的例子,本文到此结束。关于Python3 chmod修改目录或文件权限的更多信息,请搜索聚米学院之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持聚米学院!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。