创新互联Python教程:os —- 多种操作系统接口

os —- 多种操作系统接口

源代码: Lib/os.py


本模块提供了一种使用与操作系统相关的功能的便捷式途径。 如果你只是想读写一个文件,请参阅 open(),如果你想操作文件路径,请参阅 os.path 模块,如果你想读取通过命令行给出的所有文件中的所有行,请参阅 fileinput 模块。 为了创建临时文件和目录,请参阅 tempfile 模块,对于高级文件和目录处理,请参阅 shutil 模块。

关于这些函数的适用性的说明:

  • python中所有依赖于操作系统的内置模块的设计都是这样,只要不同的操作系统某一相同的功能可用,它就使用相同的接口。例如,函数 os.stat(path) 以相同的格式返回关于 path 的状态信息(该格式源于 POSIX 接口)。

  • 特定于某一操作系统的扩展通过操作 os 模块也是可用的,但是使用它们当然是对可移植性的一种威胁。

  • 所有接受路径或文件名的函数都同时支持字节串和字符串对象,并在返回路径或文件名时使用相应类型的对象作为结果。

  • 在 VxWorks 系统上,os.popen, os.fork, os.execv 和 os.spawn*p* 都未支持。

  • On WebAssembly platforms wasm32-emscripten and wasm32-wasi, large parts of the os module are not available or behave differently. API related to processes (e.g. fork(), execve()), signals (e.g. kill(), wait()), and resources (e.g. nice()) are not available. Others like getuid() and getpid() are emulated or stubs.

备注

如果使用无效或无法访问的文件名与路径,或者其他类型正确但操作系统不接受的参数,此模块的所有函数都抛出 OSError (或者它的子类)。

exception os.error

内建的 OSError 异常的一个别名。

os.name

导入的依赖特定操作系统的模块的名称。以下名称目前已注册: 'posix', 'nt', 'java'.

参见

sys.platform 有更详细的描述. os.uname() 只给出系统提供的版本信息。

platform 模块对系统的标识有更详细的检查。

文件名,命令行参数,以及环境变量。

在 Python 中,使用字符串类型表示文件名、命令行参数和环境变量。 在某些系统上,在将这些字符串传递给操作系统之前,必须将这些字符串解码为字节。 Python 使用 filesystem encoding and error handler 来执行此转换(请参阅 sys.getfilesystemencoding() )。

filesystem encoding and error handler 是在 Python 启动时通过 PyConfig_Read() 函数来配置的:请参阅 PyConfig 的 filesystem_encoding 和 filesystem_errors 等成员。

在 3.1 版更改: 在某些系统上,使用文件系统编码进行转换可能会失败。 在这种情况下,Python 会使用 代理转义编码错误处理器,这意味着在解码时,不可解码的字节被 Unicode 字符 U+DCxx 替换,并且这些字节在编码时再次转换为原始字节。

文件系统编码器 必须保证能成功解码所有 128 以内的字节。如果不能保证,API 函数可能触发 UnicodeError 。

另请参见 locale encoding。

Python UTF-8 模式

3.7 新版功能: 有关更多详细信息,请参阅 PEP 540 。

Python UTF-8 模式会忽略 locale encoding 并强制使用 UTF-8 编码。

  • 用 UTF-8 作为 文件系统编码。

  • sys.getfilesystemencoding() returns 'utf-8'.

  • locale.getpreferredencoding() returns 'utf-8' (the do_setlocale argument has no effect).

  • sys.stdin, sys.stdout 和 sys.stderr 都将 UTF-8 用作它们的文本编码,并且为 sys.stdin 和 sys.stdout 启用 surrogateescape 错误处理句柄 (sys.stderr 会继续使用 backslashreplace 如同在默认的局部感知模式下一样)

  • On Unix, os.device_encoding() returns 'utf-8' rather than the device encoding.

请注意 UTF-8 模式下的标准流设置可以被 PYTHONIOENCODING 所覆盖(在默认的区域感知模式下也同样如此)。

作为低层级 API 发生改变的结果,其他高层级 API 也会表现出不同的默认行为:

  • 命令行参数,环境变量和文件名会使用 UTF-8 编码来解码为文本。

  • os.fsdecode() 和 os.fsencode() 会使用 UTF-8 编码。

  • open(), io.open() 和 codecs.open() 默认会使用 UTF-8 编码。 但是,它们默认仍将使用严格错误处理句柄,因此试图在文本模式下打开二进制文件将可能引发异常,而不是生成无意义的数据。

如果在 Python 启动时 LC_CTYPE 区域设为 CPOSIX ,则启用 Python UTF-8 模式 (参见 PyConfig_Read() 函数)。

它可以通过命令行选项 -X utf8 和环境变量 PYTHONUTF8,来启用或禁用。

如果没有设置 PYTHONUTF8 环境变量,那么解释器默认使用当前的地区设置,除非 当前地区识别为基于 ASCII 的传统地区(如 PYTHONCOERCECLOCALE 所述),并且 locale coercion 被禁用或失败。在这种传统地区,除非显式指明不要如此,解释器将默认启用 UTF-8 模式。

Python UTF-8 模式只能在 Python 启动时启用。其值可以从 sys.flags.utf8_mode 读取。

另请参阅 在 Windows 中的 UTF-8 模式 和 filesystem encoding and error handler。

参见

PEP 686

Python 3.15 will make Python UTF-8 模式 default.

进程参数

这些函数和数据项提供了操作当前进程和用户的信息。

os.ctermid()

返回与进程控制终端对应的文件名。

Availability: Unix, not Emscripten, not WASI.

os.environ

一个 mapping 对象,其中键值是代表进程环境的字符串。 例如,environ['HOME'] 是你的主目录(在某些平台上)的路径名,相当于 C 中的 getenv("HOME")

这个映射是在第一次导入 os 模块时捕获的,通常作为 Python 启动时处理 site.py 的一部分。除了通过直接修改 os.environ 之外,在此之后对环境所做的更改不会反映在 os.environ 中。

该映射除了可以用于查询环境外,还能用于修改环境。当该映射被修改时,将自动调用 putenv()。

在Unix系统上,键和值会使用 sys.getfilesystemencoding() 和 'surrogateescape' 的错误处理。如果你想使用其他的编码,使用 environb。

备注

直接调用 putenv() 并不会影响 os.environ ,所以推荐直接修改 os.environ 。

备注

在某些平台上,包括 FreeBSD 和 macOS,设置 environ 可能导致内存泄漏。 请参阅 putenv() 的系统文档。

可以删除映射中的元素来删除对应的环境变量。当从 os.environ 删除元素时,以及调用 pop()clear() 之一时,将自动调用 unsetenv()。

在 3.9 版更改: 已更新并支持了 PEP 584 的合并 (|) 和更新 (|=) 运算符。

os.environb

environ 的字节版本:一个 mapping 对象,其中键值都是 bytes 对象,代表进程环境。 environ 和 environb 是同步的(修改 environb 会更新 environ,反之亦然)。

只有在 supports_bytes_environ 为 True 的时候 environb 才是可用的。

3.2 新版功能.

在 3.9 版更改: 已更新并支持了 PEP 584 的合并 (|) 和更新 (|=) 运算符。

os.chdir(path)

os.fchdir(fd)

os.getcwd()

以上函数请参阅 文件和目录 。

os.fsencode(filename)

将 类似路径形式的 filename 编码为 filesystem encoding and error handler;原样返回 bytes。

fsdecode() 是此函数的逆向函数。

3.2 新版功能.

在 3.6 版更改: 增加对实现了 os.PathLike 接口的对象的支持。

os.fsdecode(filename)

根据 filesystem encoding and error handler 来解码 类似路径形式的 filename;原样返回 str。

fsencode() 是此函数的逆向函数。

3.2 新版功能.

在 3.6 版更改: 增加对实现了 os.PathLike 接口的对象的支持。

os.fspath(path)

返回路径的文件系统表示。

如果传入的是 str 或 bytes 类型的字符串,将原样返回。否则 __fspath__() 将被调用,如果得到的是一个 str 或 bytes 类型的对象,那就返回这个值。其他所有情况则会抛出 TypeError 异常。

3.6 新版功能.

class os.PathLike

某些对象用于表示文件系统中的路径(如 pathlib.PurePath 对象),本类是这些对象的 抽象基类。

3.6 新版功能.

  • abstractmethod __fspath__()

    返回当前对象的文件系统表示。

    这个方法只应该返回一个 str 字符串或 bytes 字节串,请优先选择 str 字符串。

os.getenv(key, default=None)

Return the value of the environment variable key as a string if it exists, or default if it doesn’t. key is a string. Note that since getenv() uses os.environ, the mapping of getenv() is similarly also captured on import, and the function may not reflect future environment changes.

在Unix系统上,键和值会使用 sys.getfilesystemencoding() 和``‘surrogateescape’`` 错误处理进行解码。如果你想使用其他的编码,使用 os.getenvb()。

可用性: Unix, Windows。

os.getenvb(key, default=None)

Return the value of the environment variable key as bytes if it exists, or default if it doesn’t. key must be bytes. Note that since getenvb() uses os.environb, the mapping of getenvb() is similarly also captured on import, and the function may not reflect future environment changes.

getenvb() 仅在 supports_bytes_environ 为 True 时可用。

可用性: Unix。

3.2 新版功能.

os.get_exec_path(env=None)

返回将用于搜索可执行文件的目录列表,与在外壳程序中启动一个进程时相似。指定的 env 应为用于搜索 PATH 的环境变量字典。默认情况下,当 envNone 时,将会使用 environ 。

3.2 新版功能.

os.getegid()

返回当前进程的有效组ID。对应当前进程执行文件的 “set id” 位。

Availability: Unix, not Emscripten, not WASI.

os.geteuid()

返回当前进程的有效用户ID。

Availability: Unix, not Emscripten, not WASI.

os.getgid()

返回当前进程的实际组ID。

可用性: Unix。

os.getgrouplist(user, group, /)

Return list of group ids that user belongs to. If group is not in the list, it is included; typically, group is specified as the group ID field from the password record for user, because that group ID will otherwise be potentially omitted.

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能.

os.getgroups()

返回当前进程关联的附加组ID列表

Availability: Unix, not Emscripten, not WASI.

备注

在 macOS 中,getgroups() 会和其他 Unix 平台有所不同。 如果 Python 解释器是在 10.5 或更早版本中部署的,则 getgroups() 会返回与当前用户进程相关联的有效组 ID 列表;该列表受限于系统预定义的条目数量,通常为 16,并且在适当的权限下还可通过调用 setgroups() 来修改。 如果是在高于 10.5 的版本中部署的,则 getgroups() 会返回与进程的有效用户 ID 相关联的当前组访问列表;组访问列表可能会在进程的生命周期之内发生改变,它不会受对 setgroups() 的调用影响,且其长度也不被限制为 16。 部署目标值 MACOSX_DEPLOYMENT_TARGET 可以通过 sysconfig.get_config_var() 来获取。

os.getlogin()

返回通过控制终端进程进行登录的用户名。在多数情况下,使用 getpass.getuser() 会更有效,因为后者会通过检查环境变量 LOGNAMEUSERNAME 来查找用户,再由 pwd.getpwuid(os.getuid())[0] 来获取当前用户 ID 的登录名。

Availability: Unix, Windows, not Emscripten, not WASI.

os.getpgid(pid)

根据进程id pid 返回进程的组 ID 列表。如果 pid 为 0,则返回当前进程的进程组 ID 列表

Availability: Unix, not Emscripten, not WASI.

os.getpgrp()

返回当时进程组的ID

Availability: Unix, not Emscripten, not WASI.

os.getpid()

返回当前进程ID

The function is a stub on Emscripten and WASI, see WebAssembly platforms for more information.

os.getppid()

返回父进程ID。当父进程已经结束,在Unix中返回的ID是初始进程(1)中的一个,在Windows中仍然是同一个进程ID,该进程ID有可能已经被进行进程所占用。

Availability: Unix, Windows, not Emscripten, not WASI.

在 3.2 版更改: 添加WIndows的支持。

os.getpriority(which, who)

获取程序调度优先级。which 参数值可以是 PRIO_PROCESS,PRIO_PGRP,或 PRIO_USER 中的一个,who 是相对于 which (PRIO_PROCESS 的进程标识符,PRIO_PGRP 的进程组标识符和 PRIO_USER 的用户ID)。当 who 为 0 时(分别)表示调用的进程,调用进程的进程组或调用进程所属的真实用户 ID。

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能.

os.PRIO_PROCESS

os.PRIO_PGRP

os.PRIO_USER

函数 getpriority() 和 setpriority() 的参数。

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能.

os.getresuid()

返回一个由 (ruid, euid, suid) 所组成的元组,分别表示当前进程的真实用户ID,有效用户ID和暂存用户ID。

Availability: Unix, not Emscripten, not WASI.

3.2 新版功能.

os.getresgid()

返回一个由 (rgid, egid, sgid) 所组成的元组,分别表示当前进程的真实组ID,有效组ID和暂存组ID。

Availability: Unix, not Emscripten, not WASI.

3.2 新版功能.

os.getuid()

返回当前进程的真实用户ID。

可用性: Unix。

os.initgroups(username, gid, /)

调用系统 initgroups(),使用指定用户所在的所有值来初始化组访问列表,包括指定的组ID。

Availability: Unix, not Emscripten, not WASI.

3.2 新版功能.

os.putenv(key, value, /)

将名为 key 的环境变量值设置为 value。该变量名修改会影响由 os.system(), popen() ,fork() 和 execv() 发起的子进程。

对 os.environ 中的项目的赋值会自动转化为对 putenv() 的相应调用;然而,对 putenv() 的调用并不更新 os.environ ,所以实际上最好是赋值到 os.environ 的项目。这也适用于 getenv() 和 getenvb() ,它们分别使用 os.environ 和 os.environb 在它们的实现中。

备注

在某些平台上,包括 FreeBSD 和 macOS,设置 environ 可能导致内存泄漏。 请参阅 putenv() 的系统文档。

引发一个 审计事件 os.putenv,附带参数 key, value

在 3.9 版更改: 该函数现在总是可用。

os.setegid(egid, /)

设置当前进程的有效组ID。

Availability: Unix, not Emscripten, not WASI.

os.seteuid(euid, /)

设置当前进程的有效用户ID。

Availability: Unix, not Emscripten, not WASI.

os.setgid(gid, /)

设置当前进程的组ID。

Availability: Unix, not Emscripten, not WASI.

os.setgroups(groups, /)

group 参数值设置为与当进程相关联的附加组ID列表。group 参数必须为一个序列,每个元素应为每个组的数字ID。该操作通常只适用于超级用户。

Availability: Unix, not Emscripten, not WASI.

备注

在 macOS 中,groups 的长度不能超过系统定义的最大有效组 ID 数量,通常为 16。 对于未返回与调用 setgroups() 产生的相同组列表的情况,请参阅 getgroups() 的文档。

os.setpgrp()

根据已实现的版本(如果有)来调用系统 setpgrp()setpgrp(0, 0) 。相关说明,请参考 Unix 手册。

Availability: Unix, not Emscripten, not WASI.

os.setpgid(pid, pgrp, /)

使用系统调用 setpgid(),将 pid 对应进程的组ID设置为 pgrp。相关说明,请参考 Unix 手册。

Availability: Unix, not Emscripten, not WASI.

os.setpriority(which, who, priority)

设置程序调度优先级。 which 的值为 PRIO_PROCESS, PRIO_PGRP 或 PRIO_USER 之一,而 who 会相对于 which (PRIO_PROCESS 的进程标识符, PRIO_PGRP 的进程组标识符和 PRIO_USER 的用户 ID) 被解析。 who 值为零 (分别) 表示调用进程,调用进程的进程组或调用进程的真实用户 ID。 priority 是范围在 -20 至 19 的值。 默认优先级为 0;较小的优先级数值会更优先被调度。

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能.

os.setregid(rgid, egid, /)

设置当前进程的真实和有效组ID。

Availability: Unix, not Emscripten, not WASI.

os.setresgid(rgid, egid, sgid, /)

设置当前进程的真实,有效和暂存组ID。

Availability: Unix, not Emscripten, not WASI.

3.2 新版功能.

os.setresuid(ruid, euid, suid, /)

设置当前进程的真实,有效和暂存用户ID。

Availability: Unix, not Emscripten, not WASI.

3.2 新版功能.

os.setreuid(ruid, euid, /)

设置当前进程的真实和有效用户ID。

Availability: Unix, not Emscripten, not WASI.

os.getsid(pid, /)

调用系统调用 getsid()。相关说明,请参考 Unix 手册。

Availability: Unix, not Emscripten, not WASI.

os.setsid()

使用系统调用 getsid()。相关说明,请参考 Unix 手册。

Availability: Unix, not Emscripten, not WASI.

os.setuid(uid, /)

设置当前进程的用户ID。

Availability: Unix, not Emscripten, not WASI.

os.strerror(code, /)

根据 code 中的错误码返回错误消息。 在某些平台上当给出未知错误码时 strerror() 将返回 NULL 并会引发 ValueError。

os.supports_bytes_environ

如果操作系统上原生环境类型是字节型则为 True (例如在 Windows 上为 False)。

3.2 新版功能.

os.umask(mask, /)

设定当前数值掩码并返回之前的掩码。

The function is a stub on Emscripten and WASI, see WebAssembly platforms for more information.

os.uname()

返回当前操作系统的识别信息。返回值是一个有5个属性的对象:

  • sysname - 操作系统名

  • nodename - 机器在网络上的名称(需要先设定)

  • release - 操作系统发行信息

  • version - 操作系统版本信息

  • machine - 硬件标识符

为了向后兼容,该对象也是可迭代的,像是一个按照 sysnamenodenamereleaseversion,和 machine 顺序组成的元组。

有些系统会将 nodename 截短为 8 个字符或截短至前缀部分;获取主机名的一个更好方式是 socket.gethostname() 或甚至可以用 socket.gethostbyaddr(socket.gethostname())

可用性: Unix。

在 3.3 版更改: 返回结果的类型由元组变成一个类似元组的对象,同时具有命名的属性。

os.unsetenv(key, /)

取消设置(删除)名为 key 的环境变量。变量名的改变会影响由 os.system(),popen(),fork() 和 execv() 触发的子进程。

删除 os.environ 中的项目会自动转化为对 unsetenv() 的相应调用;然而,对 unsetenv() 的调用并不更新 os.environ ,所以实际上最好是删除 os.environ 的项目。

引发一个 审计事件 os.unsetenv,附带参数 key

在 3.9 版更改: 该函数现在总是可用,并且在 Windows 上也可用。

创建文件对象

这些函数创建新的 file objects 。(参见 open() 以获取打开文件描述符的相关信息。)

os.fdopen(fd, \args,**kwargs*)

返回打开文件描述符 fd 对应文件的对象。类似内建 open() 函数,二者接受同样的参数。不同之处在于 fdopen() 第一个参数应该为整数。

文件描述符操作

这些函数对文件描述符所引用的 I/O 流进行操作。

文件描述符是一些小的整数,对应于当前进程所打开的文件。例如,标准输入的文件描述符通常是0,标准输出是1,标准错误是2。之后被进程打开的文件的文件描述符会被依次指定为3,4,5等。“文件描述符”这个词有点误导性,在 Unix 平台中套接字和管道也被文件描述符所引用。

当需要时,可以用 fileno() 可以获得 file object 所对应的文件描述符。需要注意的是,直接使用文件描述符会绕过文件对象的方法,会忽略如数据内部缓冲等情况。

os.close(fd)

关闭文件描述符 fd

备注

该功能适用于低级 I/O 操作,必须用于 os.open() 或 pipe() 返回的文件描述符。若要关闭由内建函数 open()、popen() 或 fdopen() 返回的 “文件对象”,则应使用其相应的 close() 方法。

os.closerange(fd_low, fd_high, /)

关闭从 fd_low (包括)到 fd_high (排除)间的文件描述符,并忽略错误。类似(但快于):

 
 
 
 
  1. for fd in range(fd_low, fd_high):
  2. try:
  3. os.close(fd)
  4. except OSError:
  5. pass

os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

从文件描述符 src 复制 count 字节,从偏移量 offset_src 开始读取,到文件描述符 dst,从偏移量 offset_dst 开始写入。如果 offset_src 为 None,则 src 将从当前位置开始读取;offset_dst 同理。srcdst 指向的文件必须处于相同的文件系统,否则将会抛出一个 errno 被设为 errno.EXDEV 的 OSError 。

此复制的完成没有额外的从内核到用户空间再回到内核的数据转移花费。另外,一些文件系统可能实现额外的优化。完成复制就如同打开两个二进制文件一样。

返回值是复制的字节的数目。这可能低于需求的数目。

Availability: Linux >= 4.5 with glibc >= 2.27.

3.8 新版功能.

os.device_encoding(fd)

如果连接到终端,则返回一个与 fd 关联的设备描述字符,否则返回 None。

在 Unix 上,如果启用了 Python UTF-8 模式,则返回 'UTF-8' 而不是设备的编码格式。

在 3.10 版更改: 在 Unix 上,该函数现在实现了 Python UTF-8 模式。

os.dup(fd, /)

返回一个文件描述符 fd 的副本。该文件描述符的副本是 不可继承的。

在 Windows 中,当复制一个标准流(0: stdin, 1: stdout, 2: stderr)时,新的文件描述符是 可继承的。

Availability: not WASI.

在 3.4 版更改: 新的文件描述符现在是不可继承的。

os.dup2(fd, fd2, inheritable=True)

把文件描述符 fd 复制为 fd2,必要时先关闭后者。返回 fd2。新的文件描述符默认是 可继承的,除非在 inheritableFalse 时,是不可继承的。

Availability: not WASI.

在 3.4 版更改: 添加可选参数 inheritable

在 3.7 版更改: 成功时返回 fd2,以过去的版本中,总是返回 None

os.fchmod(fd, mode)

fd 指定文件的权限状态修改为 mode。可以参考 chmod() 中列出 mode 的可用值。从Python 3.3开始,这相当于 os.chmod(fd, mode)

引发一个 审计事件 os.chmod,附带参数 pathmodedir_fd

可用性: Unix。

os.fchown(fd, uid, gid)

分别将 fd 指定文件的所有者和组 ID 修改为 uidgid 的值。若不想变更其中的某个 ID,可将相应值设为 -1。参考 chown()。从 Python 3.3 开始,这相当于 os.chown(fd, uid, gid)

引发一个 审计事件 os.chown,附带参数 pathuidgiddir_fd

可用性: Unix。

os.fdatasync(fd)

强制将文件描述符 fd 指定文件写入磁盘。不强制更新元数据。

可用性: Unix。

备注

该功能在 MacOS 中不可用。

os.fpathconf(fd, name, /)

返回与打开的文件有关的系统配置信息。name 指定要查找的配置名称,它可以是字符串,是一个系统已定义的名称,这些名称定义在不同标准(POSIX.1,Unix 95,Unix 98 等)中。一些平台还定义了额外的其他名称。当前操作系统已定义的名称在 pathconf_names 字典中给出。对于未包含在该映射中的配置名称,也可以传递一个整数作为 name

如果 name 是一个字符串且不是已定义的名称,将抛出 ValueError 异常。如果当前系统不支持 name 指定的配置名称,即使该名称存在于 pathconf_names,也会抛出 OSError 异常,错误码为 errno.EINVAL。

从 Python 3.3 起,此功能等价于 os.pathconf(fd, name)

可用性: Unix。

os.fstat(fd)

获取文件描述符 fd 的状态. 返回一个 stat_result 对象。

从 Python 3.3 起,此功能等价于 os.stat(fd)

参见

stat() 函数。

os.fstatvfs(fd, /)

返回文件系统的信息,该文件系统是文件描述符 fd 指向的文件所在的文件系统,与 statvfs() 一样。从 Python 3.3 开始,它等效于 os.statvfs(fd)

可用性: Unix。

os.fsync(fd)

强制将文件描述符 fd 指向的文件写入磁盘。在 Unix,这将调用原生 fsync() 函数;在 Windows,则是 MS _commit() 函数。

如果要写入的是缓冲区内的 Python 文件对象 f,请先执行 f.flush(),然后执行 os.fsync(f.fileno()),以确保与 f 关联的所有内部缓冲区都写入磁盘。

可用性: Unix, Windows。

os.ftruncate(fd, length, /)

截断文件描述符 fd 指向的文件,以使其最大为 length 字节。从 Python 3.3 开始,它等效于 os.truncate(fd, length)

引发一个 审计事件 os.truncate,附带参数 fd, length

可用性: Unix, Windows。

在 3.5 版更改: 添加了 Windows 支持

os.get_blocking(fd, /)

获取文件描述符的阻塞模式:如果设置了 O_NONBLOCK 标志位,返回 False,如果该标志位被清除,返回 True

参见 set_blocking() 和 socket.socket.setblocking()。

可用性: Unix。

3.5 新版功能.

os.isatty(fd, /)

如果文件描述符 fd 打开且已连接至 tty 设备(或类 tty 设备),返回 True,否则返回 False

os.lockf(fd, cmd, len, /)

在打开的文件描述符上,使用、测试或删除 POSIX 锁。fd 是一个打开的文件描述符。cmd 指定要进行的操作,它们是 F_LOCK、F_TLOCK、F_ULOCK 或 F_TEST 中的一个。len 指定哪部分文件需要锁定。

引发一个 审计事件 os.lockf,附带参数 fdcmdlen

可用性: Unix。

3.3 新版功能.

os.F_LOCK

os.F_TLOCK

os.F_ULOCK

os.F_TEST

标志位,用于指定 lockf() 进行哪一种操作。

可用性: Unix。

3.3 新版功能.

os.login_tty(fd, /)

Prepare the tty of which fd is a file descriptor for a new login session. Make the calling process a session leader; make the tty the controlling tty, the stdin, the stdout, and the stderr of the calling process; close fd.

Availability: Unix, not Emscripten, not WASI.

3.11 新版功能.

os.lseek(fd, pos, how, /)

将文件描述符 fd 的当前位置设置为 pos,位置的计算方式 how 如下:设置为 SEEK_SET 或 0 表示从文件开头计算,设置为 SEEK_CUR 或 1 表示从文件当前位置计算,设置为 SEEK_END 或 2 表示文件末尾计算。返回新指针位置,这个位置是从文件开头计算的,单位是字节。

os.SEEK_SET

os.SEEK_CUR

os.SEEK_END

lseek() 函数的参数,它们的值分别为 0、1 和 2。

3.3 新版功能: 某些操作系统可能支持其他值,例如 os.SEEK_HOLEos.SEEK_DATA

os.open(path, flags, mode=0o777, **,dir_fd=None*)

打开文件 path,根据 flags 设置各种标志位,并根据 mode 设置其权限状态。当计算 mode 时,会首先根据当前 umask 值将部分权限去除。本方法返回新文件的描述符。新的文件描述符是 不可继承 的。

有关 flag 和 mode 取值的说明,请参见 C 运行时文档。标志位常量(如 O_RDONLY 和 O_WRONLY)在 os 模块中定义。特别地,在 Windows 上需要添加 O_BINARY 才能以二进制模式打开文件。

本函数带有 dir_fd 参数,支持 基于目录描述符的相对路径。

open 附带参数 pathmodeflags 会引发 审计事件。

在 3.4 版更改: 新的文件描述符现在是不可继承的。

备注

本函数适用于底层的 I/O。常规用途请使用内置函数 open(),该函数的 read()write() 方法(及其他方法)会返回 文件对象。要将文件描述符包装在文件对象中,请使用 fdopen()。

3.3 新版功能: dir_fd 参数。

在 3.5 版更改: 如果系统调用被中断,但信号处理程序没有触发异常,此函数现在会重试系统调用,而不是触发 InterruptedError 异常 (原因详见 PEP 475)。

在 3.6 版更改: 接受一个 path-like object。

以下常量是 open() 函数 flags 参数的选项。可以用按位或运算符 | 将它们组合使用。部分常量并非在所有平台上都可用。有关其可用性和用法的说明,请参阅 open(2)) 手册(Unix 上)或 MSDN (Windows 上)。

os.O_RDONLY

os.O_WRONLY

os.O_RDWR

os.O_APPEND

os.O_CREAT

os.O_EXCL

os.O_TRUNC

上述常量在 Unix 和 Windows 上均可用。

os.O_DSYNC

os.O_RSYNC

os.O_SYNC

os.O_NDELAY

os.O_NONBLOCK

os.O_NOCTTY

os.O_CLOEXEC

这个常数仅在 Unix 系统中可用。

在 3.3 版更改: 增加 O_CLOEXEC 常量。

os.O_BINARY

os.O_NOINHERIT

os.O_SHORT_LIVED

os.O_TEMPORARY

os.O_RANDOM

os.O_SEQUENTIAL

os.O_TEXT

这个常数仅在 Windows 系统中可用。

os.O_EVTONLY

os.O_FSYNC

os.O_SYMLINK

os.O_NOFOLLOW_ANY

以上常量仅适用于 macOS。

在 3.10 版更改: 加入 O_EVTONLY 、 O_FSYNC 、 O_SYMLINK 和 O_NOFOLLOW_ANY 常量。

os.O_ASYNC

os.O_DIRECT

os.O_DIRECTORY

os.O_NOFOLLOW

os.O_NOATIME

os.O_PATH

os.O_TMPFILE

os.O_SHLOCK

os.O_EXLOCK

上述常量是扩展常量,如果 C 库未定义它们,则不存在。

在 3.4 版更改: 在支持的系统上增加 O_PATH。增加 O_TMPFILE,仅在 Linux Kernel 3.11 或更高版本可用。

os.openpty()

打开一对新的伪终端,返回一对文件描述符 (主,从),分别为 pty 和 tty。新的文件描述符是 不可继承 的。对于(稍微)轻量一些的方法,请使用 pty 模块。

Availability: Unix, not Emscripten, not WASI.

在 3.4 版更改: 新的文件描述符不再可继承。

os.pipe()

创建一个管道,返回一对分别用于读取和写入的文件描述符 (r, w)。新的文件描述符是 不可继承 的。

可用性: Unix, Windows。

在 3.4 版更改: 新的文件描述符不再可继承。

os.pipe2(flags, /)

创建带有 flags 标志位的管道。可通过对以下一个或多个值进行“或”运算来构造这些 flags:O_NONBLOCK、O_CLOEXEC。返回一对分别用于读取和写入的文件描述符 (r, w)

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能.

os.posix_fallocate(fd, offset, len, /)

确保为 fd 指向的文件分配了足够的磁盘空间,该空间从偏移量 offset 开始,到 len 字节为止。

Availability: Unix, not Emscripten.

3.3 新版功能.

os.posix_fadvise(fd, offset, len, advice, /)

声明即将以特定模式访问数据,使内核可以提前进行优化。数据范围是从 fd 所指向文件的 offset 开始,持续 len 个字节。advice 的取值是如下之一:POSIX_FADV_NORMAL, POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_NOREUSE, POSIX_FADV_WILLNEED 或 POSIX_FADV_DONTNEED。

可用性: Unix。

3.3 新版功能.

os.POSIX_FADV_NORMAL

os.POSIX_FADV_SEQUENTIAL

os.POSIX_FADV_RANDOM

os.POSIX_FADV_NOREUSE

os.POSIX_FADV_WILLNEED

os.POSIX_FADV_DONTNEED

用于 posix_fadvise() 的 advice 参数的标志位,指定可能使用的访问模式。

可用性: Unix。

3.3 新版功能.

os.pread(fd, n, offset, /)

从文件描述符 fd 所指向文件的偏移位置 offset 开始,读取至多 n 个字节,而保持文件偏移量不变。

返回所读取字节的字节串 (bytestring)。如果到达了 fd 指向的文件末尾,则返回空字节对象。

可用性: Unix。

3.3 新版功能.

os.preadv(fd, buffers, offset, flags=0, /)

从文件描述符 fd 所指向文件的偏移位置 offset 开始,将数据读取至可变 字节类对象 缓冲区 buffers 中,保持文件偏移量不变。将数据依次存放到每个缓冲区中,填满一个后继续存放到序列中的下一个缓冲区,来保存其余数据。

flags 参数可以由零个或多个标志位进行按位或运算来得到:

  • RWF_HIPRI

  • RWF_NOWAIT

返回实际读取的字节总数,该总数可以小于所有对象的总容量。

操作系统可能对允许使用的缓冲区数量有限制(使用 sysconf() 获取 'SC_IOV_MAX' 值)。

本方法结合了 os.readv() 和 os.pread() 的功能。

Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Using flags requires Linux >= 4.6.

3.7 新版功能.

os.RWF_NOWAIT

不要等待无法立即获得的数据。如果指定了此标志,那么当需要从后备存储器中读取数据,或等待文件锁时,系统调用将立即返回。

如果成功读取数据,则返回读取的字节数。如果未读取到数据,则返回 -1,并将错误码 errno 置为 errno.EAGAIN。

Availability: Linux >= 4.14.

3.7 新版功能.

os.RWF_HIPRI

高优先级读/写。允许基于块的文件系统对设备进行轮询,这样可以降低延迟,但可能会占用更多资源。

目前在 Linux 上,此功能仅在使用 O_DIRECT 标志打开的文件描述符上可用。

Availability: Linux >= 4.6.

3.7 新版功能.

os.pwrite(fd, str, offset, /)

str 中的字节串 (bytestring) 写入文件描述符 fd 的偏移位置 offset 处,保持文件偏移量不变。

返回实际写入的字节数。

可用性: Unix。

3.3 新版功能.

os.pwritev(fd, buffers, offset, flags=0, /)

将缓冲区 buffers 的内容写入文件描述符 fd 的偏移位置 offset 处,保持文件偏移量不变。缓冲区 buffers 必须是由 字节类对象 组成的序列。缓冲区以数组顺序处理。先写入第一个缓冲区的全部内容,再写入第二个缓冲区,照此继续。

flags 参数可以由零个或多个标志位进行按位或运算来得到:

  • RWF_DSYNC

  • RWF_SYNC

  • RWF_APPEND

返回实际写入的字节总数。

操作系统可能对允许使用的缓冲区数量有限制(使用 sysconf() 获取 'SC_IOV_MAX' 值)。

本方法结合了 os.writev() 和 os.pwrite() 的功能。

Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Using flags requires Linux >= 4.6.

3.7 新版功能.

os.RWF_DSYNC

提供预写功能,等效于带 O_DSYNC 标志的 os.open() 。本标志只作用于通过系统调用写入的数据。

Availability: Linux >= 4.7.

3.7 新版功能.

os.RWF_SYNC

提供预写功能,等效于带 O_SYNC 标志的 os.open() 。本标志只作用于通过系统调用写入的数据。

Availability: Linux >= 4.7.

3.7 新版功能.

os.RWF_APPEND

提供预写功能,等效于带 O_APPEND 标志的 os.open() 。本标志只对 os.pwritev() 有意义,只作用于通过系统调用写入的数据。参数 offset 对写入操作无效;数据总是会添加到文件的末尾。但如果 offset 参数为 -1,则会刷新当前文件的 offset

Availability: Linux >= 4.16.

3.10 新版功能.

os.read(fd, n, /)

从文件描述符 fd 中读取至多 n 个字节。

返回所读取字节的字节串 (bytestring)。如果到达了 fd 指向的文件末尾,则返回空字节对象。

备注

该功能适用于低级 I/O 操作,必须用于 os.open() 或 pipe() 返回的文件描述符。若要读取由内建函数 open()、popen()、fdopen() 或 sys.stdin 返回的 “文件对象”,则应使用其相应的 read()readline() 方法。

在 3.5 版更改: 如果系统调用被中断,但信号处理程序没有触发异常,此函数现在会重试系统调用,而不是触发 InterruptedError 异常 (原因详见 PEP 475)。

os.sendfile(out_fd, in_fd, offset, count)

os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

将文件描述符 in_fd 中的 count 字节复制到文件描述符 out_fd 的偏移位置 offset 处。返回复制的字节数,如果到达 EOF,返回 0

定义了 sendfile() 的所有平台均支持第一种函数用法。

在 Linux 上,将 offset 设置为 None,则从 in_fd 的当前位置开始读取,并更新 in_fd 的位置。

第二种情况可以被用于 macOS 和 FreeBSD,其中 headerstrailers 是任意的缓冲区序列,它们会在写入来自 in_fd 的数据之前被写入。 它的返回内容与第一种情况相同。

在 macOS 和 FreeBSD 上,传入 0 值作为 count 将指定持续发送直至到达 in_fd 的末尾。

所有平台都支持将套接字作为 out_fd 文件描述符,有些平台也支持其他类型(如常规文件或管道)。

跨平台应用程序不应使用 headerstrailersflags 参数。

Availability: Unix, not Emscripten, not WASI.

备注

有关 sendfile() 的高级封装,参见 socket.socket.sendfile()。

3.3 新版功能.

在 3.9 版更改: outin 参数被重命名为 out_fdin_fd

os.set_blocking(fd, blocking, /)

设置指定文件描述符的阻塞模式:如果 blocking 为 False,则为该描述符设置 O_NONBLOCK 标志位,反之则清除该标志位。

参见 get_blocking() 和 socket.socket.setblocking()。

可用性: Unix。

3.5 新版功能.

os.SF_NODISKIO

os.SF_MNOWAIT

os.SF_SYNC

sendfile() 函数的参数(假设当前实现支持这些参数)。

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能.

os.SF_NOCACHE

Parameter to the sendfile() function, if the implementation supports it. The data won’t be cached in the virtual memory and will be freed afterwards.

Availability: Unix, not Emscripten, not WASI.

3.11 新版功能.

os.splice(src, dst, count, offset_src=None, offset_dst=None)

由文件描述符 src 传输 count 字节,从偏移量 offset_src 开始读取,到文件描述符 dst,从偏移量 offset_dst 开始写入。至少得有一个文件描述符必须指向管道。如果 offset_src 为 None,则 src 将从当前位置开始读取;offset_dst 同理。指向管道的文件描述符,其偏移量必须为 Nonesrcdst 指向的文件必须处于同一文件系统中,否则将会触发 OSError ,其 errno 将被设为 errno.EXDEV 。

此复制的完成没有额外的从内核到用户空间再回到内核的数据转移花费。另外,一些文件系统可能实现额外的优化。完成复制就如同打开两个二进制文件一样。

调用成功后,返回拼接到管道的字节数或从管道拼接出来的字节数。返回值为 0 意味着输入结束。如果 src 指向一个管道,则意味着没有数据需要传输,而且由于没有写入程序连到管道的写入端,所以将不会阻塞。

Availability: Linux >= 2.6.17 with glibc >= 2.5

3.10 新版功能.

os.SPLICE_F_MOVE

os.SPLICE_F_NONBLOCK

os.SPLICE_F_MORE

3.10 新版功能.

os.readv(fd, buffers, /)

从文件描述符 fd 将数据读取至多个可变的 字节类对象 缓冲区 buffers 中。将数据依次存放到每个缓冲区中,填满一个后继续存放到序列中的下一个缓冲区,来保存其余数据。

返回实际读取的字节总数,该总数可以小于所有对象的总容量。

操作系统可能对允许使用的缓冲区数量有限制(使用 sysconf() 获取 'SC_IOV_MAX' 值)。

可用性: Unix。

3.3 新版功能.

os.tcgetpgrp(fd, /)

返回与 fd 指定的终端相关联的进程组(fd 是由 os.open() 返回的已打开的文件描述符)。

Availability: Unix, not WASI.

os.tcsetpgrp(fd, pg, /)

设置与 fd 指定的终端相关联的进程组为 pg\(*fd* 是由 os.open() 返回的已打开的文件描述符)。

Availability: Unix, not WASI.

os.ttyname(fd, /)

返回一个字符串,该字符串表示与文件描述符 fd 关联的终端。如果 fd 没有与终端关联,则抛出异常。

可用性: Unix。

os.write(fd, str, /)

str 中的字节串 (bytestring) 写入文件描述符 fd

返回实际写入的字节数。

备注

该功能适用于低级 I/O 操作,必须用于 os.open() 或 pipe() 返回的文件描述符。若要写入由内建函数 open()、popen()、fdopen()、sys.stdout 或 sys.stderr 返回的 “文件对象”,则应使用其相应的 write() 方法。

在 3.5 版更改: 如果系统调用被中断,但信号处理程序没有触发异常,此函数现在会重试系统调用,而不是触发 InterruptedError 异常 (原因详见 PEP 475)。

os.writev(fd, buffers, /)

将缓冲区 buffers 的内容写入文件描述符 fd。缓冲区 buffers 必须是由 字节类对象 组成的序列。缓冲区以数组顺序处理。先写入第一个缓冲区的全部内容,再写入第二个缓冲区,照此继续。

返回实际写入的字节总数。

操作系统可能对允许使用的缓冲区数量有限制(使用 sysconf() 获取 'SC_IOV_MAX' 值)。

可用性: Unix。

3.3 新版功能.

查询终端的尺寸

3.3 新版功能.

os.get_terminal_size(fd=STDOUT_FILENO, /)

返回终端窗口的尺寸,格式为 (columns, lines),它是类型为 terminal_size 的元组。

可选参数 fd (默认为 STDOUT_FILENO 或标准输出)指定应查询的文件描述符。

如果文件描述符未连接到终端,则抛出 OSError 异常。

shutil.get_terminal_size() 是供常规使用的高阶函数,os.get_terminal_size 是其底层的实现。

可用性: Unix, Windows。

class os.terminal_size

元组的子类,存储终端窗口尺寸 (columns, lines)

  • columns

    终端窗口的宽度,单位为字符。

  • lines

    终端窗口的高度,单位为字符。

文件描述符的继承

3.4 新版功能.

每个文件描述符都有一个 “inheritable”(可继承)标志位,该标志位控制了文件描述符是否可以由子进程继承。从 Python 3.4 开始,由 Python 创建的文件描述符默认是不可继承的。

在 UNIX 上,执行新程序时,不可继承的文件描述符在子进程中是关闭的,其他文件描述符将被继承。

在 Windows 上,不可继承的句柄和文件描述符在子进程中是关闭的,但标准流(文件描述符 0、1 和 2 即标准输入、标准输出和标准错误)是始终继承的。如果使用 spawn* 函数,所有可继承的句柄和文件描述符都将被继承。如果使用 subprocess 模块,将关闭除标准流以外的所有文件描述符,并且仅当 close_fds 参数为 False 时才继承可继承的句柄。

On WebAssembly platforms wasm32-emscripten and wasm32-wasi, the file descriptor cannot be modified.

os.get_inheritable(fd, /)

获取指定文件描述符的“可继承”标志位(为布尔值)。

os.set_inheritable(fd, inheritable, /)

设置指定文件描述符的“可继承”标志位。

os.get_handle_inheritable(handle, /)

获取指定句柄的“可继承”标志位(为布尔值)。

可用性: Windows。

os.set_handle_inheritable(handle, inheritable, /)

设置指定句柄的“可继承”标志位。

可用性: Windows。

文件和目录

在某些 Unix 平台上,许多函数支持以下一项或多项功能:

  • 指定文件描述符为参数: 通常在 os 模块中提供给函数的 path 参数必须是表示文件路径的字符串,但是,某些函数现在可以接受其 path 参数为打开文件描述符,该函数将对描述符指向的文件进行操作。(对于 POSIX 系统,Python 将调用以 f 开头的函数变体(如调用 fchdir 而不是 chdir)。)

    可以用 os.supports_fd 检查某个函数在你的平台上是否支持将 path 参数指定为文件描述符。如果不支持,使用该功能将抛出 NotImplementedError 异常。

    如果该函数还支持 dir_fdfollow_symlinks 参数,那么用文件描述符作为 path 后就不能再指定上述参数了。

  • 基于目录描述符的相对路径: 如果 dir_fd 不是 None,它就应该是一个指向目录的文件描述符,这时待操作的 path 应该是相对路径,相对路径是相对于前述目录的。如果 path 是绝对路径,则 dir_fd 将被忽略。(对于 POSIX 系统,Python 将调用该函数的变体,变体以 at 结尾,可能以 f 开头(如调用 faccessat 而不是 access)。

    可以用 os.supports_dir_fd 检查某个函数在你的平台上是否支持 dir_fd。如果不支持,使用该功能将抛出 NotImplementedError 异常。

  • 不跟踪符号链接: 如果 follow_symlinksFalse,并且待操作路径的最后一个元素是符号链接,则该函数将在符号链接本身而不是链接所指向的文件上操作。(对于 POSIX 系统,Python 将调用该函数的 l... 变体。)

    可以用 os.supports_follow_symlinks 检查某个函数在你的平台上是否支持 follow_symlinks。如果不支持,使用该功能将抛出 NotImplementedError 异常。

os.access(path, mode, **,dir_fd=None,effective_ids=False,follow_symlinks=True*)

使用 实际用户ID/用户组ID 测试对 path 的访问。请注意,大多数测试操作将使用 有效用户ID/用户组ID,因此可以在 suid/sgid 环境中运用此例程,来测试调用用户是否具有对 path 的指定访问权限。mode 为 F_OK 时用于测试 path 是否存在,也可以对 R_OK、W_OK 和 X_OK 中的一个或多个进行“或”运算来测试指定权限。允许访问则返回 True,否则返回 False。更多信息请参见 Unix 手册页 access(2))

本函数支持指定 基于目录描述符的相对路径 和 不跟踪符号链接。

如果 effective_idsTrue,access() 将使用 有效用户ID/用户组ID 而非 实际用户ID/用户组ID 进行访问检查。您的平台可能不支持 effective_ids,您可以使用 os.supports_effective_ids 检查它是否可用。如果不可用,使用它时会抛出 NotImplementedError 异常。

备注

使用 access() 来检查用户是否具有某项权限(如打开文件的权限),然后再使用 open() 打开文件,这样做存在一个安全漏洞,因为用户可能会在检查和打开文件之间的时间里做其他操作。推荐使用 EAFP 技术。如:

 
 
 
 
  1. if os.access("myfile", os.R_OK):
  2. with open("myfile") as fp:
  3. return fp.read()
  4. return "some default data"

最好写成:

 
 
 
 
  1. try:
  2. fp = open("myfile")
  3. except PermissionError:
  4. return "some default data"
  5. else:
  6. with fp:
  7. return fp.read()

备注

即使 access() 指示 I/O 操作会成功,但实际操作仍可能失败,尤其是对网络文件系统的操作,其权限语义可能超出常规的 POSIX 权限位模型。

在 3.3 版更改: 添加 dir_fdeffective_idsfollow_symlinks 参数。

在 3.6 版更改: 接受一个 path-like object。

os.F_OK

os.R_OK

os.W_OK

os.X_OK

作为 access() 的 mode 参数的可选值,分别测试 path 的存在性、可读性、可写性和可执行性。

os.chdir(path)

将当前工作目录更改为 path

本函数支持 指定文件描述符为参数。其中,描述符必须指向打开的目录,不能是打开的文件。

本函数可以抛出 OSError 及其子类的异常,如 FileNotFoundError、PermissionError 和 NotADirectoryError 异常。

引发一个 审计事件 os.chdir,附带参数 path

3.3 新版功能: 在某些平台上新增支持将 path 参数指定为文件描述符。

在 3.6 版更改: 接受一个 path-like object。

os.chflags(path, flags, **,follow_symlinks=True*)

path 的 flags 设置为其他由数字表示的 flagsflags 可以用以下值按位或组合起来(以下值在 stat 模块中定义):

  • stat.UF_NODUMP

  • stat.UF_IMMUTABLE

  • stat.UF_APPEND

  • stat.UF_OPAQUE

  • stat.UF_NOUNLINK

  • stat.UF_COMPRESSED

  • stat.UF_HIDDEN

  • stat.SF_ARCHIVED

  • stat.SF_IMMUTABLE

  • stat.SF_APPEND

  • stat.SF_NOUNLINK

  • stat.SF_SNAPSHOT

本函数支持 不跟踪符号链接。

引发一个 审计事件 os.chflags,附带参数 pathflags

Availability: Unix, not Emscripten, not WASI.

3.3 新版功能: follow_symlinks 参数。

在 3.6 版更改: 接受一个 path-like object。

os.chmod(path, mode, **,dir_fd=None,follow_symlinks=True*)

path 的 mode 更改为其他由数字表示的 modemode 可以用以下值之一,也可以将它们按位或组合起来(以下值在 stat 模块中定义):

  • stat.S_ISUID

  • stat.S_ISGID

  • 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

本函数支持 指定文件描述符、指定基于目录描述符的相对路径 和 不跟踪符号链接。

备注

尽管 Windows 支持 chmod(),但只能用它设置文件的只读标志(stat.S_IWRITEstat.S_IREAD 常量或对应的整数值)。所有其他标志位都会被忽略。

The function is limited on Emscripten and WASI, see WebAssembly platforms for more information.

引发一个 审计事件 os.chmod,附带参数 pathmodedir_fd

3.3 新版功能: 添加了指定 path 为文件描述符的支持,以及 dir_fdfollow_symlinks 参数。

在 3.6 版更改: 接受一个 path-like object。

os.chown(path, uid, gid, **,dir_fd=None,follow_symlinks=True*)

path 的用户和组 ID 分别修改为数字形式的 uidgid。若要使其中某个 ID 保持不变,请将其置为 -1。

本函数支持 指定文件描述符、指定基于目录描述符的相对路径 和 不跟踪符号链接。

参见更高阶的函数 shutil.chown(),除了数字 ID 之外,它也接受名称。

引发一个 审计事件 os.chown,附带参数 pathuidgiddir_fd

可用性: Unix。

3.3 新版功能: 添加了指定 path 为文件描述符的支持,以及 dir_fdfollow_symlinks 参数。

在 3.6 版更改: 支持 类路径对象。

os.chroot(path)

将当前进程的根目录更改为 path

Availability: Unix, not Emscripten, not WASI.

在 3.6 版更改: 接受一个 path-like object。

os.fchdir(fd)

将当前工作目录更改为文件描述符 fd 指向的目录。fd 必须指向打开的目录而非文件。从 Python 3.3 开始,它等效于 os.chdir(fd)

引发一个 审计事件 os.chdir,附带参数 path

可用性: Unix。

os.getcwd()

返回表示当前工作目录的字符串。

os.getcwdb()

返回表示当前工作目录的字节串 (bytestring)。

在 3.8 版更改: 在 Windows 上,本函数现在会使用 UTF-8 编码格式而不是 ANSI 代码页:请参看 PEP 529 了解具体原因。 该函数在 Windows 上不再被弃用。

os.lchflags(path, flags)

path 的 flags 设置为其他由数字表示的 flags,与 chflags() 类似,但不跟踪符号链接。从 Python 3.3 开始,它等效于 os.chflags(path, flags, follow_symlinks=False)

引发一个 审计事件 os.chflags,附带参数 pathflags

Availability: Unix, not Emscripten, not WASI.

在 3.6 版更改: 接受一个 path-like object。

os.lchmod(path, mode)

path 的权限状态修改为 mode。如果 path 是符号链接,则影响符号链接本身而非链接目标。可以参考 chmod() 中列出 mode 的可用值。从 Python 3.3 开始,它等效于 os.chmod(path, mode, follow_symlinks=False)

引发一个 审计事件 os.chmod,附带参数 pathmodedir_fd

可用性: Unix。

在 3.6 版更改: 接受一个 path-like object。

os.lchown(path, uid, gid)

path 的用户和组 ID 分别修改为数字形式的 uidgid,本函数不跟踪符号链接。从 Python 3.3 开始,它等效于 os.chown(path, uid, gid, follow_symlinks=False)

引发一个 审计事件 os.chown,附带参数 pathuidgiddir_fd

可用性: Unix。

在 3.6 版更改: 接受一个 path-like object。

os.link(src, dst, **,src_dir_fd=None,dst_dir_fd=None,follow_symlinks=True*)

创建一个指向 src 的硬链接,名为 dst

本函数支持将 src_dir_fddst_dir_fd 中的一个或两个指定为 基于目录描述符的相对路径,支持 不跟踪符号链接。

引发一个 审计事件 os.link 附带参数 srcdstsrc_dir_fddst_dir_fd

可用性: Unix, Windows。

在 3.2 版更改: 添加了对 Windows 的支持。

3.3 新版功能: 添加 src_dir_fddst_dir_fdfollow_symlinks 参数。

在 3.6 版更改: 接受一个 类路径对象 作为 srcdst

os.listdir(path=’.’)

返回一个包含由 path 指定目录中条目名称组成的列表。 该列表按任意顺序排列,并且不包括特殊条目 '.''..',即使它们存在于目录中。 如果有文件在调用此函数期间在被移除或添加到目录中,是否要包括该文件的名称并没有规定。

path 可以是 类路径对象。

网站题目:创新互联Python教程:os —- 多种操作系统接口
分享地址:http://www.shufengxianlan.com/qtweb/news19/314019.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联