迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中更改文件权限

作者:迹忆客 最近更新:2023/04/26 浏览次数:

在 Python 中或围绕 Python 应用程序处理文件时,必须拥有适当的文件权限以帮助实现预期的操作。 从工作脚本文件到数据导出,由 Python 应用程序创建、更新或管理的文件也可以使用 Python 代码进行处理。

通常,大多数开发人员使用文件权限的常用方法是使用命令行命令或脚本。 但是,可以使用特定的内置库及其方法在 Python 中更改文件权限。

本文将讨论如何在 Python 中更改文件权限。


Python 中的操作系统文件权限

在操作系统中,从 Windows 到 Linux,它们都有不同的权限。 读取、写入和执行的权限根据文件的用途设置。

文件资源管理器通常提供 UI 以允许典型用户更改授予文件的文件权限。 然而,对于大多数开发人员来说,命令行界面就是它发生的地方。

对于 Linux(通常是 Unix 系统)甚至 Windows,您可以检查文件权限以及文件所持有的其他信息。

在 Windows 上:

ls

输出:

Directory: C:\Users\USER

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         7/13/2022   8:09 PM                .android
d-----         9/23/2022   8:11 PM                .vscode
d-r---          5/9/2022   1:34 PM                3D Objects
d-----         5/12/2022  11:49 PM                Apple
d-----         8/30/2022   1:20 PM                Autodesk
d-r---         3/18/2022   6:34 AM                Contacts
d-r---         9/23/2022   8:19 PM                Desktop
d-r---         9/23/2022   8:52 PM                Documents
d-r---         9/28/2022  12:48 PM                Downloads
d-r---         3/18/2022   6:34 AM                Favorites
d-r---         4/28/2022  11:03 AM                Links
d-r---         7/16/2022  10:41 PM                Music
d-r---         4/11/2022  11:39 PM                OneDrive
d-r---         9/22/2022  11:13 AM                Pictures
d-r---         3/18/2022   6:34 AM                Saved Games
d-r---         3/18/2022   6:35 AM                Searches
d-r---         9/26/2022   2:49 PM                Videos
-a----         9/23/2022   8:25 PM              5 .node_repl_history
-a----         9/27/2022   2:34 AM           1100 pslog.txt

模式选项卡包含文件权限信息,这是显示文件类型的第一列。

同样,对于Linux等Unix系统,可以列出所有的文件信息。

ls -la

输出:

drwxr-xr-x   6 eva        users         1024 Jun  8 16:46 sabon
-rw-------   1 eva        users         1564 Apr 28 14:35 splus
-rw-------   1 eva        users         1119 Apr 28 16:00 splus2
-rw-r--r--   1 eva        users         9753 Sep 27 11:14 ssh_known_hosts
-rw-r--r--   1 eva        users         4131 Sep 21 15:23 swlist.out
-rw-r--r--   1 eva        users        94031 Sep  1 16:07 tarnti.zip

此外,第一列包含模式 (drwxr-xr-x)。 在第一列中,有四个细分。

第一个细分是代表实际文件类型的第一个字符。 第二个细分(接下来的三个字符)显示了用户的访问权限(或权限)。

第三个细分(接下来的三个字符)显示拥有该文件的组的权限。 最后一个细分(最后三个字符)显示其他用户的权限。

现在,我们就用这个drwxr-xr-x模式来解释一下。 在我们继续之前,你需要知道这三个字母代表什么:

  • r 表示已读。
  • w 表示写。
  • x 表示执行。

每个文件或目录都分配有文件所有者、一组相关用户的成员和其他人的访问权限。 权限可以设置为:

  1. 读取一个文件。
  2. 写一个文件。
  3. 执行一个文件。

第一个字符 d 表示它是一个目录。 但是,如果字符是 -,则它是一个典型的文件。

接下来的三组字符 rwx 表示用户可以读取、写入和执行该目录。 接下来的三个 r-x 表示该组可以读取和执行但不能写入目录。

最后三个,r-x,表示其他人可以读取和执行但不能写入目录。

因此,要在 Linux 中更改文件的权限,一个简单的 chmod 命令通常很有用。

chmod u+x someFile

u+x 是给 someFile 的权限。

u+x 权限给someFile的用户(remember,user,group,其他用户)增加(+)执行权限。 请记住,执行由 x 表示。

但是我们可以很容易地在 Python 中实现这一点。 有了这些知识,您现在可以毫无问题地在 Python 中更改文件的权限。


在 Python 中使用 chmod() 更改文件权限

chmod() 方法源于 Linux 中的 chmod 命令,其工作是更改文件或目录的模式。 chmod() 方法可通过 os 模块获得,这是任何 Python 安装或环境的默认设置。

os 模块提供接口和方法,使我们能够与任何操作系统进行交互。 它根据其系统为 NT 或 Posix 提供操作系统例程。

在众多功能中,它允许我们管理目录、检索它们的内容并更改这些目录中的行为和模式。

除了 chmod() 方法之外,我们还需要另一个名为 stat 的模块,它提供常量/函数来解释 os.stat()os.lstat() 的结果。 此统计信息提供了权限标志,我们将需要这些标志来更改用户、组或其他用户的文件权限。

权限标志包括读取、写入和执行操作。

我们必须导入他们的模块才能使用 chmod() 和 stat。

import os, stat

此外,我们需要访问我们想要更改其权限的文件。 os 模块对此也很有用。

chmod() 使用以下语法:

os.chmod(filePath, permissionFlag)

要检查文件(例如,新创建的 index.txt)的当前权限模式,您可以使用 stat() 方法。

perm = os.stat('index.txt')
print(perm.st_mode)

输出:

33206

os.stat() 获取指定路径的状态,而 st_mode 属性提供文件的权限位,其中前两个八进制数字指定文件类型,其他四个是文件权限。

该文件必须与 Python 文件位于同一目录中,或者放置完整的文件路径。

对于 Linux 用户使用八进制表示法(指定权限的两种方式之一),我们可以将权限设置视为一系列位,可以在下面的代码片段中看到。

rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000

# rwx = 111 in binary = 7
# rw- = 110 in binary = 6
# r-x = 101 in binary = 5
# r-- = 100 in binary = 4

要更改权限模式,您可以使用 stat 权限标志:

import os, stat

perm = os.stat('index.txt')
print(perm.st_mode)
os.chmod('index.txt', stat.S_IWGRP)

perm = os.stat('index.txt')
print(perm.st_mode)

输出:

33206
33060

第一个八进制数显示更改前的权限状态,第二个八进制数为添加分组阅读权限后的状态。

您可以使用 | 组合不同的权限标志 操作员。 在这个例子中,我们将为用户添加读、写和执行的权限。

import os, stat

perm = os.stat('index.txt')
print(perm.st_mode)
os.chmod('index.txt', stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC | stat.S_IRUSR)

perm = os.stat('index.txt')
print(perm.st_mode)

输出:

33060
33206

还有其他权限标志,如下所示:

  • stat.S_IREAD、stat.S_IWRITE 和 stat.S_IEXEC 标志分别用于为用户添加对文件的读取、写入和执行权限。
  • stat.S_IRGRP、stat.S_IWGRP 和 stat.S_IXGRP 标志分别用于将组的读、写和执行权限添加到文件。
  • stat.S_IROTH、stat.S_IWOTH 和 stat.S_IXOTH 标志分别用于为其他用户添加对文件的读、写和执行权限。
  • stat.S_IRWXU、stat.S_IRWXG 和 stat.S_IRWXO 标志,分别为用户、组和其他用户同时添加读、写和执行权限。

除了使用权限标志外,您还可以在 chmod() 方法中使用八进制符号。 我们使用八进制数755,指定用户可以读、写和执行,组和其他用户只能读和执行。

os.chmod('index.txt', 0o755)

输出:

33206

您必须添加 0o 前缀以表示它是八进制表示法。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便