Python修改Linux文件权限及相对路径调用问题详解
本文详解Python中如何使用os.chmod修改Linux文件及目录的读写执行权限,解析stat模块中各类权限常量的含义。同时针对Python脚本在Linux下通过绝对路径无法执行的问题,提供了利用os.path.abspath和os.chdir切换工作目录的解决方案,确保脚本能正确调用相对路径资源。
Linux文件权限基础概念
在Linux系统中生成对流云团路径图片后,若文件权限仅保留读写(rw)而缺少执行(x)权限,其他程序将无法调用该文件。以下简要解释Linux文件权限的三个基本属性,欢迎补充完善。
Linux系统的权限体系相对简洁,主要包含R(Read)、W(Write)和X(Execute)三种类型。
r(Read,读取):针对文件,表示拥有读取文件内容的权限;针对目录,表示拥有浏览目录内容的权限。
w(Write,写入):针对文件,表示拥有新增、修改或删除文件内容的权限;针对目录,表示拥有在目录内新建、删除、修改或移动文件的权限。
x(eXecute,执行):针对文件,表示拥有执行该文件的权限;针对目录,表示拥有进入(进入目录)该目录的权限。
1. 若目录仅有只读权限,用户无法使用cd命令进入该目录,必须拥有执行(x)权限才能进入。
2. 若目录仅有执行权限,用户可以进入该目录,但无法查看目录下的文件或子目录名称;若要查看文件名和目录名,还需具备读取(r)权限。
3. 文件能否被删除,主要取决于该文件所在目录对用户是否具备写(w)权限。若目录对用户无写权限,则该目录下的所有文件均不可被删除(文件所有者除外)。
4. 若目录的写位(w)未设置,即使用户对目录中某个文件拥有写权限,也无法对该文件进行写入操作。
接下来介绍核心操作方法。
Python修改文件权限方法
使用os.chmod(path, mode)方法可以修改文件权限,该方法仅需两个参数:目标路径path和权限模式mode。
以下是os.chmod方法中常用的权限模式常量列表:
stat.S_ISUID: 执行时设置用户ID。此选项不常用。
stat.S_ISGID: 执行时设置组ID。此选项不常用。
stat.S_ENFMT: 强制记录锁定。此选项不常用。
stat.S_ISVTX: 执行后保存文字图像(粘滞位)。
stat.S_IREAD: 所有者可读权限。
stat.S_IWRITE: 所有者可写权限。
stat.S_IEXEC: 所有者可执行权限。
stat.S_IRWXU: 所有者拥有读、写和执行权限。
stat.S_IRUSR: 所有者可读权限。
stat.S_IWUSR: 所有者可写权限。
stat.S_IXUSR: 所有者可执行权限。
stat.S_IRWXG: 同组用户拥有读、写和执行权限。
stat.S_IRGRP: 同组用户可读权限。
stat.S_IWGRP: 同组用户可写权限。
stat.S_IXGRP: 同组用户可执行权限。
stat.S_IRWXO: 其他用户拥有读、写和执行权限。
stat.S_IROTH: 其他用户可读权限。
stat.S_IWOTH: 其他用户可写权限。
stat.S_IXOTH: 其他用户可执行权限。
具体使用示例如下:
权限设置代码示例
import os,stat
os.chmod('abc',stat.S_IREAD)
os.chmod('abc',stat.S_IREAD+stat.S_IWOTH)
os.chmod(outputpath,stat.S_IRWXO+stat.S_IRWXG+stat.S_IRWXU)
在设置权限时,我曾连续调用三次chmod,每次分别传入一个参数,得到的结果分别是-------rwx、----rwx---和-rwx------。这显然不符合预期,通过将这些权限常量相加(如stat.S_IRWXU + stat.S_IRWXG + stat.S_IRWXO),即可得到完整的-rwxrwxrwx权限,即分别为user、group和others设置权限后累加。
解决Python脚本相对路径调用问题
补充知识:在Linux环境下,Python代码通常只能在文件所在目录下直接调用;若在其他路径下通过绝对路径调用,往往无法执行。
将Python代码部署到Linux后常遇到此类问题:在代码所在目录下可直接执行,但切换到上一级目录并使用绝对路径时却无法调用。这通常是因为代码内部使用了相对路径,而当前的工作目录并非文件所在目录,导致相对路径解析失败。
以下是解决该问题的方案:
par_dir = os.path.dirname(os.path.abspath(__file__)) os.chdir(par_dir)
这是由技术专家提供的有效技巧。
首先通过os.path.abspath(__file__)获取文件所在的绝对路径(精确到.py文件名),然后利用os.path.dirname提取文件所在的目录地址,最后通过os.chdir将当前工作目录切换至该文件所在路径,即可解决调用问题。
以上关于Python修改Linux文件(文件夹)权限属性及解决调用问题的内容分享完毕,希望能对大家有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













