Python修改Linux文件权限及相对路径调用问题详解

阿澈
阿澈
发布时间:2026-10-13| 5人浏览过
原创

本文详解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文件(文件夹)权限属性及解决调用问题的内容分享完毕,希望能对大家有所帮助。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。