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 不受支持。
注解
此模块中的所有功能均上升 OSError
(或其子类)在文件名和路径无效或不可访问的情况下,或具有正确类型但操作系统不接受的其他参数。
- os.name¶
导入的操作系统相关模块的名称。以下名称当前已注册:
'posix'
,'nt'
,'java'
.
文件名、命令行参数和环境变量¶
在Python中,文件名、命令行参数和环境变量使用字符串类型表示。在某些系统上,在将这些字符串传递给操作系统之前,需要对这些字符串进行字节间的解码。Python使用 filesystem encoding and error handler 要执行此转换(请参见 sys.getfilesystemencoding()
)。
这个 filesystem encoding and error handler 在Python启动时由 PyConfig_Read()
功能:请参阅 filesystem_encoding
和 filesystem_errors
成员: PyConfig
。
在 3.1 版更改: 在某些系统上,使用文件系统编码的转换可能会失败。在本例中,python使用 surrogateescape encoding error handler 这意味着不可编码的字节在解码时被一个Unicode字符U+DCXX替换,这些字节在编码时再次被转换为原始字节。
这个 file system encoding 必须保证成功解码128以下的所有字节。如果文件系统编码无法提供此保证,则API函数可以引发 UnicodeError
。
另请参阅 locale encoding 。
Python UTF-8模式¶
3.7 新版功能: 看见 PEP 540 了解更多详细信息。
Python UTF-8模式会忽略 locale encoding 并强制使用UTF-8编码:
使用UTF-8作为 filesystem encoding 。
sys.getfilesystemencoding()
退货'UTF-8'
。locale.getpreferredencoding()
退货'UTF-8'
( do_setlocale 参数不起作用)。sys.stdin
,sys.stdout
, andsys.stderr
all use UTF-8 as their text encoding, with thesurrogateescape
error handler being enabled forsys.stdin
andsys.stdout
(sys.stderr
continues to usebackslashreplace
as it does in the default locale-aware mode)在Unix上,
os.device_encoding()
退货'UTF-8'
。而不是设备编码。
请注意,UTF-8模式下的标准流设置可由 PYTHONIOENCODING
(就像它们可以处于默认的区域设置感知模式一样)。
由于这些较低级别API的变化,其他较高级别API也表现出不同的默认行为:
使用UTF-8编码将命令行参数、环境变量和文件名解码为文本。
os.fsdecode()
和os.fsencode()
使用UTF-8编码。open()
,io.open()
,以及codecs.open()
默认情况下使用UTF-8编码。但是,默认情况下,它们仍然使用严格的错误处理程序,因此尝试以文本模式打开二进制文件可能会引发异常,而不是产生无意义的数据。
这个 Python UTF-8 Mode 如果LC_CTYPE区域设置为 C
或 POSIX
在Python启动时(请参阅 PyConfig_Read()
函数)。
属性可以启用或禁用它。 -X utf8
命令行选项和 PYTHONUTF8
环境变量。
如果 PYTHONUTF8
如果完全不设置环境变量,则解释器默认使用当前区域设置, 除非 当前区域设置被标识为传统的基于ASCII的区域设置(如中所述 PYTHONCOERCECLOCALE
),并且区域强制被禁用或失败。在这样的传统区域设置中,除非明确指示不要启用UTF-8模式,否则解释器将默认启用UTF-8模式。
Python UTF-8模式只能在Python启动时启用。它的值可以从 sys.flags.utf8_mode
。
另请参阅 UTF-8 mode on Windows 以及 filesystem encoding and error handler 。
工艺参数¶
这些功能和数据项提供信息,并对当前流程和用户进行操作。
- os.ctermid()¶
返回进程控制终端对应的文件名。
Availability UNIX。
- os.environ¶
A mapping 表示字符串环境的对象。例如,
environ['HOME']
是主目录的路径名(在某些平台上),相当于getenv("HOME")
在C.第一次捕获此映射时,
os
模块是导入的,通常在python启动期间作为处理的一部分site.py
. 在此之后对环境所做的更改不会反映在os.environ
,通过修改所做的更改除外os.environ
直接。此映射可用于修改环境和查询环境。
putenv()
将在修改映射时自动调用。在Unix上,键和值使用
sys.getfilesystemencoding()
和'surrogateescape'
错误处理程序。使用environb
如果要使用其他编码。注解
调用
putenv()
直接不改变os.environ
,所以最好修改os.environ
.注解
在一些平台上,包括FreeBSD和Mac OS X,设置
environ
可能导致内存泄漏。请参阅系统文档以了解putenv()
.可以删除此映射中的项以取消设置环境变量。
unsetenv()
从中删除项目时将自动调用os.environ
当其中一个pop()
或clear()
方法被调用。在 3.9 版更改: 更新以支持 PEP 584 的合并 (
|
)和更新 (|=
)操作员。
- os.environb¶
字节版本
environ
答: mapping 对象,将环境表示为字节字符串。environ
和environb
同步(修改environb
更新environ
反之亦然)。environb
仅在以下情况下可用supports_bytes_environ
是True
.3.2 新版功能.
在 3.9 版更改: 更新以支持 PEP 584 的合并 (
|
)和更新 (|=
)操作员。
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
这些功能在 文件和目录 .
- os.fsencode(filename)¶
Encode path-like filename to the filesystem encoding and error handler; return
bytes
unchanged.fsdecode()
是反向功能。3.2 新版功能.
在 3.6 版更改: 支持添加以接受实现
os.PathLike
接口。
- os.fsdecode(filename)¶
Decode the path-like filename from the filesystem encoding and error handler; return
str
unchanged.fsencode()
是反向功能。3.2 新版功能.
在 3.6 版更改: 支持添加以接受实现
os.PathLike
接口。
- os.fspath(path)¶
返回路径的文件系统表示形式。
如果
str
或bytes
传入,返回时不变。否则__fspath__()
调用并返回其值,只要它是str
或bytes
对象。在所有其他情况下,TypeError
提高了。3.6 新版功能.
- class os.PathLike¶
安 abstract base class 对于表示文件系统路径的对象,例如
pathlib.PurePath
.3.6 新版功能.
- os.getenv(key, default=None)¶
返回环境变量的值 key 如果它存在,或者 default 如果没有。 key , default 结果是str。
在Unix上,密钥和值用
sys.getfilesystemencoding()
和'surrogateescape'
错误处理程序。使用os.getenvb()
如果要使用其他编码。Availability :大多数风格的Unix、Windows。
- os.getenvb(key, default=None)¶
返回环境变量的值 key 如果它存在,或者 default 如果没有。 key , default 结果是字节。
getenvb()
仅在以下情况下可用supports_bytes_environ
是True
.Availability :大多数风格的Unix。
3.2 新版功能.
- os.get_exec_path(env=None)¶
返回在启动进程时将搜索与shell类似的命名可执行文件的目录列表。 env 如果指定,则应为环境变量字典以查找中的路径。默认情况下,当 env 是
None
,environ
使用。3.2 新版功能.
- os.getegid()¶
返回当前进程的有效组ID。这对应于当前进程中正在执行的文件上的“set id”位。
Availability UNIX。
- os.geteuid()¶
返回当前进程的有效用户ID。
Availability UNIX。
- os.getgid()¶
返回当前进程的实际组ID。
Availability UNIX。
- os.getgrouplist(user, group)¶
返回组ID的列表 user 属于。如果 group 不在列表中,它包括在内;通常, group 从的密码记录中指定为组ID字段 user .
Availability UNIX。
3.3 新版功能.
- os.getgroups()¶
返回与当前进程关联的补充组ID的列表。
Availability UNIX。
注解
在Mac OS X上,
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()
因为后者检查环境变量LOGNAME
或USERNAME
找出用户是谁,然后返回pwd.getpwuid(os.getuid())[0]
获取当前真实用户ID的登录名。Availability :Unix、Windows。
- os.getpgid(pid)¶
返回进程ID为的进程的进程组ID pid .如果 pid 为0,返回当前进程的进程组ID。
Availability UNIX。
- os.getpgrp()¶
返回当前进程组的ID。
Availability UNIX。
- os.getpid()¶
返回当前进程ID。
- os.getppid()¶
返回父进程的进程ID。当父进程退出时,在Unix上,返回的ID是init进程(1)中的一个,在Windows上,它仍然是相同的ID,其他进程可能已经重用了该ID。
Availability :Unix、Windows。
在 3.2 版更改: 添加了对Windows的支持。
- os.getpriority(which, who)¶
获取程序调度优先级。价值 哪一个 是其中之一
PRIO_PROCESS
,PRIO_PGRP
或PRIO_USER
和 who 是相对于 哪一个 (进程标识符PRIO_PROCESS
,的进程组标识符PRIO_PGRP
和的用户IDPRIO_USER
)的零值 who 分别表示调用进程、调用进程的进程组或调用进程的实际用户ID。Availability UNIX。
3.3 新版功能.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
的参数
getpriority()
和setpriority()
功能。Availability UNIX。
3.3 新版功能.
- os.getresuid()¶
返回一个元组(ruid、euid、suid),表示当前进程的真实、有效和保存的用户ID。
Availability UNIX。
3.2 新版功能.
- os.getresgid()¶
返回一个元组(rgid、egid、sgid),表示当前进程的真实、有效和保存的组ID。
Availability UNIX。
3.2 新版功能.
- os.getuid()¶
返回当前进程的实际用户ID。
Availability UNIX。
- os.initgroups(username, gid)¶
调用system initgroups()以使用指定用户名为成员的所有组以及指定的组ID初始化组访问列表。
Availability UNIX。
3.2 新版功能.
- os.putenv(key, value)¶
设置名为的环境变量 key 弦 value . 对环境的此类更改会影响从开始的子流程
os.system()
,popen()
或fork()
和execv()
.中项目的工作分配
os.environ
自动转换为相应的调用putenv()
;但是,呼叫putenv()
不要更新os.environ
,因此,实际上最好分配到os.environ
.注解
在一些平台上,包括FreeBSD和Mac OS X,设置
environ
可能导致内存泄漏。请参阅系统文档以了解putenv()
.提出一个 auditing event
os.putenv
带着论据key
,value
.在 3.9 版更改: 该功能现在始终可用。
- os.setegid(egid)¶
设置当前进程的有效组ID。
Availability UNIX。
- os.seteuid(euid)¶
设置当前进程的有效用户ID。
Availability UNIX。
- os.setgid(gid)¶
设置当前进程的组ID。
Availability UNIX。
- os.setgroups(groups)¶
将与当前进程关联的补充组ID列表设置为 group . group 必须是序列,并且每个元素必须是标识组的整数。此操作通常仅对超级用户可用。
Availability UNIX。
注解
在Mac OS X上,长度为 group 不能超过系统定义的最大有效组ID数,通常为16。参见文档
getgroups()
对于不能通过调用setGroups()返回相同组列表集的情况。
- os.setpgrp()¶
调用系统调用
setpgrp()
或setpgrp(0, 0)
取决于实现的版本(如果有)。有关语义,请参阅Unix手册。Availability UNIX。
- os.setpgid(pid, pgrp)¶
调用系统调用
setpgid()
使用ID设置流程的流程组ID pid 到ID为的流程组 pgrp . 有关语义,请参阅Unix手册。Availability UNIX。
- os.setpriority(which, who, priority)¶
设置程序调度优先级。价值 哪一个 是其中之一
PRIO_PROCESS
,PRIO_PGRP
或PRIO_USER
和 who 是相对于 哪一个 (进程标识符PRIO_PROCESS
,的进程组标识符PRIO_PGRP
和的用户IDPRIO_USER
)的零值 who 分别表示调用进程、调用进程的进程组或调用进程的实际用户ID。 优先 是-20到19之间的值。默认优先级为0;优先级越低,调度越有利。Availability UNIX。
3.3 新版功能.
- os.setregid(rgid, egid)¶
设置当前进程的真实有效的组ID。
Availability UNIX。
- os.setresgid(rgid, egid, sgid)¶
设置当前进程的真实、有效和保存的组ID。
Availability UNIX。
3.2 新版功能.
- os.setresuid(ruid, euid, suid)¶
设置当前进程的真实、有效和保存的用户ID。
Availability UNIX。
3.2 新版功能.
- os.setreuid(ruid, euid)¶
设置当前进程的真实有效的用户ID。
Availability UNIX。
- os.getsid(pid)¶
调用系统调用
getsid()
. 有关语义,请参阅Unix手册。Availability UNIX。
- os.setsid()¶
调用系统调用
setsid()
. 有关语义,请参阅Unix手册。Availability UNIX。
- os.setuid(uid)¶
设置当前进程的用户ID。
Availability UNIX。
- os.strerror(code)¶
返回与中的错误代码对应的错误消息 code . 在平台上
strerror()
返回NULL
当给出一个未知的错误号时,ValueError
提高了。
- os.supports_bytes_environ¶
True
如果环境的本机操作系统类型是字节(例如False
在Windows上)。3.2 新版功能.
- os.umask(mask)¶
设置当前数字umask并返回上一个umask。
- os.uname()¶
返回标识当前操作系统的信息。返回值是一个具有五个属性的对象:
sysname
-操作系统名称nodename
-网络上计算机的名称(已定义实现)release
-操作系统版本version
-操作系统版本machine
-硬件标识符
为了向后兼容,这个对象也是不可更改的,其行为类似于包含
sysname
,nodename
,release
,version
和machine
按这个顺序。一些系统截断
nodename
到8个字符或主要组件;获得主机名的更好方法是socket.gethostname()
甚至socket.gethostbyaddr(socket.gethostname())
.Availability :最新的Unix风格。
在 3.3 版更改: 返回从元组更改为具有命名属性的类似于元组的对象的类型。
- os.unsetenv(key)¶
取消设置(删除)名为 key . 对环境的此类更改会影响从开始的子流程
os.system()
,popen()
或fork()
和execv()
.删除中的项
os.environ
自动转换为相应的调用unsetenv()
;但是,呼叫unsetenv()
不要更新os.environ
,因此实际上最好删除os.environ
.提出一个 auditing event
os.unsetenv
带着论证key
.在 3.9 版更改: 该功能现在始终可用,并且在Windows上也可用。
文件对象创建¶
这些函数创建新的 file objects . (也见) open()
用于打开文件描述符。)
文件描述符操作¶
这些函数对使用文件描述符引用的I/O流进行操作。
文件描述符是与当前进程打开的文件相对应的小整数。例如,标准输入通常是文件描述符0,标准输出是1,标准错误是2。然后,通过进程打开的更多文件将被分配为3、4、5等。“文件描述符”这个名称有点欺骗性;在UNIX平台上,套接字和管道也被文件描述符引用。
这个 fileno()
方法可用于获取与 file object 必要时。注意,直接使用文件描述符将绕过文件对象方法,忽略诸如数据的内部缓冲等方面。
- os.close(fd)¶
关闭文件描述符 fd .
- os.closerange(fd_low, fd_high)¶
关闭来自的所有文件描述符 fd_low (包括) fd_high (排除),忽略错误。相当于(但比)::
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
- os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)¶
拷贝 计数 来自文件描述符的字节 src ,从偏移开始 offset_src ,到文件描述符 dst ,从偏移开始 offset_dst .如果 offset_src 没有,那么 src 从当前位置读取;分别用于 offset_dst . 文件指向 src 和 dst 必须驻留在同一个文件系统中,否则
OSError
提出与errno
设置为errno.EXDEV
.这个拷贝是在不增加从内核到用户空间再返回内核的数据传输成本的情况下完成的。另外,一些文件系统可以实现额外的优化。复制过程就像两个文件都以二进制方式打开一样。
返回值是复制的字节数。这可能小于请求的金额。
Availability :linux kernel>=4.5或glibc>=2.27。
3.8 新版功能.
- os.device_encoding(fd)¶
返回描述与关联的设备编码的字符串 fd 如果它连接到终端;否则返回
None
.在Unix上,如果 Python UTF-8 Mode 已启用,则返回
'UTF-8'
而不是设备编码。在 3.10 版更改: 在Unix上,该函数现在实现Python UTF-8模式。
- os.dup(fd)¶
返回文件描述符的副本 fd . 新的文件描述符是 non-inheritable .
在Windows上,复制标准流(0:stdin、1:stdout、2:stderr)时,新的文件描述符是 inheritable .
在 3.4 版更改: 新的文件描述符现在不可继承。
- os.dup2(fd, fd2, inheritable=True)¶
重复的文件描述符 fd 到 fd2 如有必要,先关闭后者。返回 fd2 . 新的文件描述符是 inheritable 默认或不可继承,如果 可继承的 是
False
.在 3.4 版更改: 添加可选 可继承的 参数。
在 3.7 版更改: 返回 fd2 论成功。以前,
None
总是返回。
- os.fchmod(fd, mode)¶
更改由指定的文件模式 fd 到数字 mode . 查看文档
chmod()
对于可能的值 mode .从python 3.3开始,这相当于os.chmod(fd, mode)
.提出一个 auditing event
os.chmod
带着论据path
,mode
,dir_fd
.Availability UNIX。
- os.fchown(fd, uid, gid)¶
更改由提供的文件的所有者和组ID fd 到数字 uid 和 gid . 要保持其中一个ID不变,请将其设置为-1。见
chown()
.从python 3.3开始,这相当于os.chown(fd, uid, gid)
.提出一个 auditing event
os.chown
带着论据path
,uid
,gid
,dir_fd
.Availability UNIX。
- os.fdatasync(fd)¶
使用文件描述符强制写入文件 fd 到磁盘。不强制更新元数据。
Availability 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)
.Availability UNIX。
- os.fstat(fd)¶
获取文件描述符的状态 fd . 返回A
stat_result
对象。从python 3.3开始,这相当于
os.stat(fd)
.参见
这个
stat()
功能。
- os.fstatvfs(fd)¶
返回有关包含与文件描述符关联的文件的文件系统的信息 fd ,像
statvfs()
.从python 3.3开始,这相当于os.statvfs(fd)
.Availability UNIX。
- os.fsync(fd)¶
使用文件描述符强制写入文件 fd 到磁盘。在Unix上,这将调用本机
fsync()
功能;在Windows上,MS_commit()
功能。如果您从一个缓冲的python开始 file object f 首先做
f.flush()
然后做os.fsync(f.fileno())
,以确保与 f 写入磁盘。Availability :Unix、Windows。
- os.ftruncate(fd, length)¶
截断与文件描述符对应的文件 fd 所以最多 长度 字节大小。从python 3.3开始,这相当于
os.truncate(fd, length)
.提出一个 auditing event
os.truncate
带着论据fd
,length
.Availability :Unix、Windows。
在 3.5 版更改: 添加了对Windows的支持
- os.get_blocking(fd)¶
获取文件描述符的阻塞模式:
False
如果O_NONBLOCK
设置标志,True
如果旗标被清除。也见
set_blocking()
和socket.socket.setblocking()
.Availability UNIX。
3.5 新版功能.
- os.isatty(fd)¶
返回
True
如果文件描述符 fd 打开并连接到TTY(类似)设备,否则False
.
- os.lockf(fd, cmd, len)¶
在打开的文件描述符上应用、测试或删除posix锁。 fd 是打开的文件描述符。 cmd 指定要使用的命令-其中一个
F_LOCK
,F_TLOCK
,F_ULOCK
或F_TEST
. len 指定要锁定的文件部分。提出一个 auditing event
os.lockf
带着论据fd
,cmd
,len
.Availability UNIX。
3.3 新版功能.
- 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_HOLE
或os.SEEK_DATA
.
- os.open(path, flags, mode=511, *, dir_fd=None)¶
打开文件 path 并根据 flags 可能它的模式是根据 mode . 计算时 mode ,首先屏蔽当前umask值。返回新打开文件的文件描述符。新的文件描述符是 non-inheritable .
有关标志和模式值的描述,请参阅C运行时文档;标志常量(如
O_RDONLY
和O_WRONLY
)在中定义os
模块。尤其是在Windows添加O_BINARY
需要以二进制模式打开文件。此功能可以支持 paths relative to directory descriptors 与 dir_fd 参数。
提出一个 auditing event
open
带着论据path
,mode
,flags
.在 3.4 版更改: 新的文件描述符现在不可继承。
注解
此功能用于低级I/O。正常使用时,请使用内置功能
open()
,返回 file object 具有read()
和write()
方法(以及更多)。要在文件对象中封装文件描述符,请使用fdopen()
.3.3 新版功能: 这个 dir_fd 参数。
在 3.5 版更改: 如果系统调用被中断且信号处理程序没有引发异常,则函数现在将重试系统调用,而不是引发
InterruptedError
例外(见) PEP 475 理由)。在 3.6 版更改: 接受一 path-like object .
以下常量是 flags 参数 open()
功能。它们可以使用按位或运算符组合 |
. 其中一些在所有平台上都不可用。有关它们的可用性和使用说明,请参阅 open(2) Unix上的手动页面或 the 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_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库没有定义,则不存在。
- os.openpty()¶
打开一个新的伪终端对。返回一对文件描述符
(master, slave)
分别用于PTY和TTY。新的文件描述符是 non-inheritable . 对于(稍微)更便携的方法,请使用pty
模块。Availability :一些风格的Unix。
在 3.4 版更改: 新的文件描述符现在不可继承。
- os.pipe()¶
创建管道。返回一对文件描述符
(r, w)
分别用于读写。新的文件描述符是 non-inheritable .Availability :Unix、Windows。
在 3.4 版更改: 新的文件描述符现在不可继承。
- os.pipe2(flags)¶
使用创建管道 flags 按原子顺序设置。 flags 可以通过将以下一个或多个值组合在一起来构造:
O_NONBLOCK
,O_CLOEXEC
. 返回一对文件描述符(r, w)
分别用于读写。Availability :一些风格的Unix。
3.3 新版功能.
- os.posix_fallocate(fd, offset, len)¶
确保为指定的文件分配足够的磁盘空间 fd 从开始 抵消 继续 len 字节。
Availability UNIX。
3.3 新版功能.
- os.posix_fadvise(fd, offset, len, advice)¶
声明以特定模式访问数据的意图,从而允许内核进行优化。建议适用于由指定的文件区域 fd 开始于 抵消 继续 len 字节。 建议 是其中之一
POSIX_FADV_NORMAL
,POSIX_FADV_SEQUENTIAL
,POSIX_FADV_RANDOM
,POSIX_FADV_NOREUSE
,POSIX_FADV_WILLNEED
或POSIX_FADV_DONTNEED
.Availability 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()
指定可能使用的访问模式。Availability UNIX。
3.3 新版功能.
- os.pread(fd, n, offset)¶
至多阅读 n 来自文件描述符的字节 fd 位置 抵消 ,保持文件偏移量不变。
返回包含已读取字节的字节串。如果文件的结尾被引用 fd 已到达,返回空字节对象。
Availability UNIX。
3.3 新版功能.
- os.preadv(fd, buffers, offset, flags=0)¶
从文件描述符读取 fd 位置 抵消 变为可变的 bytes-like objects 缓冲器 ,保持文件偏移量不变。将数据传输到每个缓冲区,直到数据满为止,然后按顺序移动到下一个缓冲区以保存其余数据。
flags参数包含一个位或零个或多个以下标志:
返回实际读取的字节总数,它可以小于所有对象的总容量。
操作系统可能会设置限制 (
sysconf()
价值'SC_IOV_MAX'
)可使用的缓冲区数量。结合的功能
os.readv()
和os.pread()
.Availability :Linux 2.6.30及更新版本、FreeBSD 6.0及更新版本、OpenBSD 2.7及更新版本、AIX7.1及更新版本。使用标志需要Linux 4.6或更高版本。
3.7 新版功能.
- os.RWF_NOWAIT¶
不要等待不立即可用的数据。如果指定了此标志,则如果系统调用必须从后备存储器中读取数据或等待锁定,它将立即返回。
如果某些数据读取成功,它将返回读取的字节数。如果没有读取任何字节,它将返回
-1
并将errno设置为errno.EAGAIN
.Availability :Linux 4.14及更高版本。
3.7 新版功能.
- os.RWF_HIPRI¶
高优先级读/写。允许基于块的文件系统使用设备的轮询,这提供了较低的延迟,但可能会使用其他资源。
目前,在Linux上,此功能仅在使用
O_DIRECT
flag。Availability :Linux 4.6及更高版本。
3.7 新版功能.
- os.pwrite(fd, str, offset)¶
写入字节字符串 str 到文件描述符 fd 在位置 抵消 ,保持文件偏移量不变。
返回实际写入的字节数。
Availability UNIX。
3.3 新版功能.
- os.pwritev(fd, buffers, offset, flags=0)¶
写下 缓冲器 内容到文件描述符 fd 在偏移量 抵消 ,保持文件偏移量不变。 缓冲器 必须是一个序列 bytes-like objects .缓冲区按数组顺序处理。第一个缓冲区的全部内容在进入第二个缓冲区之前写入,依此类推。
flags参数包含一个位或零个或多个以下标志:
返回实际写入的字节总数。
操作系统可能会设置限制 (
sysconf()
价值'SC_IOV_MAX'
)可使用的缓冲区数量。结合的功能
os.writev()
和os.pwrite()
.Availability :Linux 2.6.30及更新版本、FreeBSD 6.0及更新版本、OpenBSD 2.7及更新版本、AIX7.1及更新版本。使用标志需要Linux 4.7或更高版本。
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()
,其效果仅适用于系统调用写入的数据范围。这个 抵消 参数不影响写入操作;数据总是附加到文件的末尾。但是,如果 抵消 论证是-1
,当前文件 抵消 已更新。Availability :Linux 4.16及更新版本。
3.10 新版功能.
- os.read(fd, n)¶
至多阅读 n 来自文件描述符的字节 fd .
返回包含已读取字节的字节串。如果文件的结尾被引用 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 到文件描述符 out_fd 开始于 抵消 . 返回发送的字节数。当到达EOF时返回
0
.第一个函数表示法由定义
sendfile()
.在Linux上,如果 抵消 给出作为
None
,从当前位置读取字节 in_fd 以及 in_fd 已更新。第二种情况可用于Mac OS X和FreeBSD,其中 报头 和 拖车 是在数据之前和之后写入的任意缓冲区序列, in_fd 是书面的。它返回与第一个案例相同的结果。
在Mac OS X和FreeBSD上,值为
0
对于 计数 指定发送到 in_fd 达到。所有平台支撑插座组件 out_fd 文件描述符和一些平台也允许其他类型(例如常规文件、管道)。
跨平台应用程序不应使用 headers , 拖车 和 flags 参数。
Availability UNIX。
注解
对于更高级别的封装
sendfile()
见socket.socket.sendfile()
.3.3 新版功能.
在 3.9 版更改: 参数 out 和 in 重命名为 out_fd 和 in_fd .
- os.set_blocking(fd, blocking)¶
设置指定文件描述符的阻止模式。设置
O_NONBLOCK
如果阻塞为False
,否则清除标记。也见
get_blocking()
和socket.socket.setblocking()
.Availability UNIX。
3.5 新版功能.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
参数到
sendfile()
函数,如果实现支持它们。Availability UNIX。
3.3 新版功能.
- os.splice(src, dst, count, offset_src=None, offset_dst=None)¶
转接 计数 文件描述符中的字节 src ,从偏移开始 offset_src ,到文件描述符 dst ,从偏移开始 offset_dst 。至少有一个文件描述符必须引用管道。如果 offset_src 都不是,那么 src 是从当前位置读取的;分别针对 offset_dst 。与引用管道的文件描述符关联的偏移量必须为
None
。指向的文件 src 和 dst 必须驻留在同一文件系统中,否则将引发OSError
是通过以下方式提高的errno
设置为errno.EXDEV
。这个拷贝是在不增加从内核到用户空间再返回内核的数据传输成本的情况下完成的。另外,一些文件系统可以实现额外的优化。复制过程就像两个文件都以二进制方式打开一样。
成功完成后,返回与管道拼接的字节数或从管道拼接的字节数。返回值0表示输入结束。如果 src 引用管道,则这意味着没有要传输的数据,这对挡路来说没有意义,因为管道的写入端没有连接到写入器。
Availability :linux kernel>=2.6.17和glibc>=2.5
3.10 新版功能.
- os.readv(fd, buffers)¶
从文件描述符读取 fd 变成一些可变的 bytes-like objects 缓冲器 . 将数据传输到每个缓冲区,直到数据满为止,然后按顺序移动到下一个缓冲区以保存其余数据。
返回实际读取的字节总数,它可以小于所有对象的总容量。
操作系统可能会设置限制 (
sysconf()
价值'SC_IOV_MAX'
)可使用的缓冲区数量。Availability UNIX。
3.3 新版功能.
- os.tcgetpgrp(fd)¶
返回与终端关联的进程组 fd (由返回的打开文件描述符)
os.open()
)Availability UNIX。
- os.tcsetpgrp(fd, pg)¶
设置与终端关联的进程组 fd (由返回的打开文件描述符)
os.open()
到 pg .Availability UNIX。
- os.ttyname(fd)¶
返回指定与文件描述符关联的终端设备的字符串 fd . 如果 fd 未与终端设备关联,引发异常。
Availability UNIX。
- os.write(fd, str)¶
写入字节字符串 str 到文件描述符 fd .
返回实际写入的字节数。
注解
此函数用于低级I/O,必须应用于由返回的文件描述符
os.open()
或pipe()
. 写入内置函数返回的“文件对象”open()
或通过popen()
或fdopen()
或sys.stdout
或sys.stderr
使用它的write()
方法。在 3.5 版更改: 如果系统调用被中断且信号处理程序没有引发异常,则函数现在将重试系统调用,而不是引发
InterruptedError
例外(见) PEP 475 理由)。
- os.writev(fd, buffers)¶
写下的内容 缓冲器 到文件描述符 fd . 缓冲器 必须是一个序列 bytes-like objects .缓冲区按数组顺序处理。第一个缓冲区的全部内容在进入第二个缓冲区之前写入,依此类推。
返回实际写入的字节总数。
操作系统可能会设置限制 (
sysconf()
价值'SC_IOV_MAX'
)可使用的缓冲区数量。Availability 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
是低级实现。Availability :Unix、Windows。
文件描述符的继承¶
3.4 新版功能.
文件描述符有一个“可继承”标志,该标志指示文件描述符是否可以由子进程继承。自Python3.4以来,默认情况下,由Python创建的文件描述符是不可继承的。
在UNIX上,不可继承的文件描述符在执行新程序时在子进程中关闭,其他文件描述符则被继承。
在Windows上,不可继承的句柄和文件描述符在子进程中关闭,但标准流(文件描述符0、1和2:stdin、stdout和stderr)除外,这些流始终是继承的。使用 spawn*
函数、所有可继承的句柄和所有可继承的文件描述符都将被继承。使用 subprocess
模块,关闭除标准流之外的所有文件描述符,并且仅当 close_fds 参数是 False
.
- os.get_inheritable(fd)¶
获取指定文件描述符(布尔值)的“可继承”标志。
- os.set_inheritable(fd, inheritable)¶
设置指定文件描述符的“可继承”标志。
- os.get_handle_inheritable(handle)¶
获取指定句柄的“可继承”标志(布尔值)。
Availability :Windows。
- os.set_handle_inheritable(handle, inheritable)¶
设置指定句柄的“可继承”标志。
Availability :Windows。
文件和目录¶
在某些UNIX平台上,这些功能中的许多都支持以下一个或多个功能:
指定文件描述符: 通常 path 为中的函数提供的参数
os
模块必须是指定文件路径的字符串。但是,一些函数现在也可以接受其打开的文件描述符 path 参数。然后,该函数将对描述符所引用的文件进行操作。(对于POSIX系统,python将调用前缀为f
(例如呼叫fchdir
而不是chdir
)你可以检查一下 path 可以指定为平台上特定函数的文件描述符,使用
os.supports_fd
. 如果此功能不可用,使用它将引发NotImplementedError
.如果函数也支持 dir_fd 或 follow_symlinks 参数,在提供 path 作为文件描述符。
相对于目录描述符的路径: 如果 dir_fd 不是
None
,它应该是一个引用目录的文件描述符,并且要操作的路径应该是相对的;然后路径将是相对于该目录的。如果路径是绝对的, dir_fd 被忽略。(对于POSIX系统,python将使用at
后缀和可能的前缀f
(例如呼叫faccessat
而不是access
)你可以检查一下 dir_fd 支持您的平台上的特定功能,使用
os.supports_dir_fd
. 如果它不可用,使用它将提高NotImplementedError
.
不遵循符号链接: 如果 follow_symlinks 是
False
, and the last element of the path to operate on is a symbolic link, the function will operate on the symbolic link itself rather than the file pointed to by the link. (For POSIX systems, Python will call thel...
函数的变体。)你可以检查一下 follow_symlinks 支持您的平台上的特定功能,使用
os.supports_follow_symlinks
. 如果它不可用,使用它将提高NotImplementedError
.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
使用真实的uid/gid测试访问 path . 请注意,大多数操作将使用有效的uid/gid,因此可以在suid/sgid环境中使用此例程来测试调用用户是否具有对 path . mode 应该是
F_OK
来测试 path 或者它可以包含一个或多个R_OK
,W_OK
和X_OK
测试权限。返回True
如果允许访问,False
如果没有。参见Unix手册页 access(2) 更多信息。此函数可以支持指定 paths relative to directory descriptors 和 not following symlinks .
如果 effective_ids 是
True
,access()
将使用有效的uid/gid而不是真正的uid/gid执行访问检查。 effective_ids 您的平台可能不支持;您可以使用os.supports_effective_ids
. 如果它不可用,使用它将引发NotImplementedError
.注解
使用
access()
检查用户是否获得授权,例如,在实际执行此操作之前打开文件open()
创建一个安全漏洞,因为用户可能会利用检查和打开文件之间的短时间间隔来操作该文件。最好用 EAFP 技术。例如::if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
最好写为:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
注解
即使在以下情况下,I/O操作也可能失败
access()
表示它们会成功,特别是对网络文件系统的操作,这些文件系统的权限语义可能超出了通常的POSIX权限位模型。在 3.3 版更改: 增加了 dir_fd , effective_ids 和 follow_symlinks 参数。
在 3.6 版更改: 接受一 path-like object .
- os.chdir(path)¶
将当前工作目录更改为 path .
此功能可以支持 specifying a file descriptor . 描述符必须指向打开的目录,而不是打开的文件。
此功能可以提升
OSError
和子类,如FileNotFoundError
,PermissionError
和NotADirectoryError
.提出一个 auditing event
os.chdir
带着论证path
.3.3 新版功能: 添加了对指定的支持 path 在某些平台上作为文件描述符。
在 3.6 版更改: 接受一 path-like object .
- os.chflags(path, flags, *, follow_symlinks=True)¶
设置的标志 path 到数字 flags . flags 可以采用以下值的组合(按位或)(如
stat
模块):此功能可以支持 not following symlinks .
提出一个 auditing event
os.chflags
带着论据path
,flags
.Availability UNIX。
3.3 新版功能: 这个 follow_symlinks 参数。
在 3.6 版更改: 接受一 path-like object .
- os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶
更改的模式 path 到数字 mode . mode 可以采用以下值之一(如
stat
模块)或它们的位或或组合:此功能可以支持 specifying a file descriptor , paths relative to directory descriptors 和 not following symlinks .
注解
尽管Windows支持
chmod()
,您只能用它设置文件的只读标志(通过stat.S_IWRITE
和stat.S_IREAD
常量或相应的整数值)。忽略所有其他位。提出一个 auditing event
os.chmod
带着论据path
,mode
,dir_fd
.3.3 新版功能: 添加了对指定的支持 path 作为打开的文件描述符, dir_fd 和 follow_symlinks 参数。
在 3.6 版更改: 接受一 path-like object .
- os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)¶
更改的所有者和组ID path 到数字 uid 和 gid . 要保持其中一个ID不变,请将其设置为-1。
此功能可以支持 specifying a file descriptor , paths relative to directory descriptors 和 not following symlinks .
见
shutil.chown()
对于接受除数字ID之外的名称的高级函数。提出一个 auditing event
os.chown
带着论据path
,uid
,gid
,dir_fd
.Availability UNIX。
3.3 新版功能: 添加了对指定的支持 path 作为打开的文件描述符, dir_fd 和 follow_symlinks 参数。
在 3.6 版更改: 支持一 path-like object .
- os.chroot(path)¶
将当前进程的根目录更改为 path .
Availability UNIX。
在 3.6 版更改: 接受一 path-like object .
- os.fchdir(fd)¶
将当前工作目录更改为文件描述符表示的目录 fd . 描述符必须指向打开的目录,而不是打开的文件。从python 3.3开始,这相当于
os.chdir(fd)
.提出一个 auditing event
os.chdir
带着论证path
.Availability UNIX。
- os.getcwd()¶
返回表示当前工作目录的字符串。
- os.getcwdb()¶
返回表示当前工作目录的字节字符串。
在 3.8 版更改: 函数现在在Windows上使用UTF-8编码,而不是ANSI代码页:请参见 PEP 529 理由是。在Windows上不再推荐使用该函数。
- os.lchflags(path, flags)¶
设置的标志 path 到数字 flags ,像
chflags()
,但不要使用符号链接。从python 3.3开始,这相当于os.chflags(path, flags, follow_symlinks=False)
.提出一个 auditing event
os.chflags
带着论据path
,flags
.Availability UNIX。
在 3.6 版更改: 接受一 path-like object .
- os.lchmod(path, mode)¶
更改的模式 path 到数字 mode . 如果路径是符号链接,则会影响符号链接而不是目标。查看文档
chmod()
对于可能的值 mode .从python 3.3开始,这相当于os.chmod(path, mode, follow_symlinks=False)
.提出一个 auditing event
os.chmod
带着论据path
,mode
,dir_fd
.Availability UNIX。
在 3.6 版更改: 接受一 path-like object .
- os.lchown(path, uid, gid)¶
更改的所有者和组ID path 到数字 uid 和 gid . 此函数不会遵循符号链接。从python 3.3开始,这相当于
os.chown(path, uid, gid, follow_symlinks=False)
.提出一个 auditing event
os.chown
带着论据path
,uid
,gid
,dir_fd
.Availability 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_fd 和/或 dst_dir_fd 供应 paths relative to directory descriptors 和 not following symlinks .
提出一个 auditing event
os.link
带着论据src
,dst
,src_dir_fd
,dst_dir_fd
.Availability :Unix、Windows。
在 3.2 版更改: 添加了Windows支持。
3.3 新版功能: 增加了 src_dir_fd , dst_dir_fd 和 follow_symlinks 参数。
在 3.6 版更改: 接受一 path-like object 对于 src 和 dst .
- os.listdir(path='.')¶
返回一个列表,其中包含由给定的目录中的条目名称 path . 列表是任意顺序的,不包括特殊条目
'.'
和'..'
即使它们出现在目录中。如果在调用此函数期间从目录中删除或添加了一个文件,则未指定是否包含该文件的名称。path 可能是 path-like object . 如果 path 属于类型
bytes
(直接或间接通过PathLike
接口),返回的文件名也将是bytes
;在所有其他情况下,它们的类型为str
.此功能还可以支持 specifying a file descriptor ;文件描述符必须引用目录。
提出一个 auditing event
os.listdir
带着论证path
.注解
编码
str
文件名到bytes
使用fsencode()
.参见
这个
scandir()
函数返回目录条目和文件属性信息,为许多常见的用例提供更好的性能。在 3.2 版更改: 这个 path 参数变为可选。
3.3 新版功能: 添加了对指定的支持 path 作为打开的文件描述符。
在 3.6 版更改: 接受一 path-like object .
- os.lstat(path, *, dir_fd=None)¶
执行相当于
lstat()
给定路径上的系统调用。类似stat()
,但不遵循符号链接。返回Astat_result
对象。在不支持符号链接的平台上,这是的别名
stat()
.从python 3.3开始,这相当于
os.stat(path, dir_fd=dir_fd, follow_symlinks=False)
.此功能还可以支持 paths relative to directory descriptors .
参见
这个
stat()
功能。在 3.2 版更改: 添加了对Windows6.0(Vista)符号链接的支持。
在 3.3 版更改: 增加了 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object 对于 src 和 dst .
在 3.8 版更改: 在Windows上,现在打开表示另一个路径(名称代理项)的重新分析点,包括符号链接和目录连接。其他类型的重分析点由操作系统解析为
stat()
.
- os.mkdir(path, mode=511, *, dir_fd=None)¶
创建名为的目录 path 使用数字模式 mode .
如果目录已经存在,
FileExistsError
提高了。在某些系统上, mode 被忽略。在使用它的地方,当前umask值首先被屏蔽掉。如果不是最后9位(即八进制表示的最后3位 mode )它们的意义取决于平台。在某些平台上,它们被忽略,您应该调用
chmod()
明确设置它们。此功能还可以支持 paths relative to directory descriptors .
也可以创建临时目录;请参见
tempfile
模块的tempfile.mkdtemp()
功能。提出一个 auditing event
os.mkdir
带着论据path
,mode
,dir_fd
.3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object .
- os.makedirs(name, mode=511, exist_ok=False)¶
递归目录创建函数。类似于
mkdir()
,但会生成包含叶目录所需的所有中间级目录。这个 mode 参数传递给
mkdir()
用于创建叶目录;请参见 the mkdir() description 解释的方式。要设置任何新创建的父目录的文件权限位,可以在调用之前设置umaskmakedirs()
. 现有父目录的文件权限位没有更改。如果 exist_ok 是
False
(默认),一个FileExistsError
如果目标目录已存在,则引发。注解
makedirs()
如果要创建的路径元素包括pardir
(例如,“.”在Unix系统上)。此函数正确处理UNC路径。
提出一个 auditing event
os.mkdir
带着论据path
,mode
,dir_fd
.3.2 新版功能: 这个 exist_ok 参数。
在 3.4.1 版更改: 在python 3.4.1之前,如果 exist_ok 是
True
目录已经存在,makedirs()
如果 mode 与现有目录的模式不匹配。由于这种行为不可能安全地实现,所以在Python3.4.1中删除了它。见 bpo-21082 .在 3.6 版更改: 接受一 path-like object .
在 3.7 版更改: 这个 mode 参数不再影响新创建的中间级目录的文件权限位。
- os.mkfifo(path, mode=438, *, dir_fd=None)¶
创建名为 path 使用数字模式 mode . 当前umask值首先从模式中屏蔽。
此功能还可以支持 paths relative to directory descriptors .
FIFO是可以像常规文件一样访问的管道。FIFO存在,直到它们被删除(例如
os.unlink()
)。通常,FIFO用作“客户机”和“服务器”类型进程之间的集合:服务器打开FIFO进行读取,客户机打开它进行写入。注意mkfifo()
不会打开FIFO——它只是创建集合点。Availability UNIX。
3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object .
- os.mknod(path, mode=384, device=0, *, dir_fd=None)¶
创建名为的文件系统节点(文件、设备特殊文件或命名管道) path . mode 指定要使用的权限和要创建的节点类型,并将其与以下节点之一组合(按位或)
stat.S_IFREG
,stat.S_IFCHR
,stat.S_IFBLK
和stat.S_IFIFO
(这些常量在stat
)为了stat.S_IFCHR
和stat.S_IFBLK
, 装置 定义新创建的设备特殊文件(可能使用os.makedev()
,否则将被忽略。此功能还可以支持 paths relative to directory descriptors .
Availability UNIX。
3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object .
- os.major(device)¶
从原始设备号(通常是
st_dev
或st_rdev
场从stat
)
- os.minor(device)¶
从原始设备号(通常是
st_dev
或st_rdev
场从stat
)
- os.makedev(major, minor)¶
从主设备号和次设备号组成一个原始设备号。
- os.pathconf(path, name)¶
返回与命名文件相关的系统配置信息。 name 指定要检索的配置值;它可以是一个字符串,该字符串是定义的系统值的名称;这些名称在许多标准(posix.1、unix 95、unix 98和其他)中指定。有些平台还定义了其他名称。主机操作系统已知的名称在
pathconf_names
字典。对于未包含在该映射中的配置变量,传递一个整数 name 也可接受。如果 name 是一个字符串,未知,
ValueError
提高了。如果特定值 name 主机系统不支持,即使它包含在pathconf_names
,一个OSError
提出与errno.EINVAL
错误号。此功能可以支持 specifying a file descriptor .
Availability UNIX。
在 3.6 版更改: 接受一 path-like object .
- os.pathconf_names¶
字典映射名称被接受
pathconf()
和fpathconf()
到主机操作系统为这些名称定义的整数值。这可用于确定系统已知的名称集。Availability UNIX。
- os.readlink(path, *, dir_fd=None)¶
返回表示符号链接指向的路径的字符串。结果可以是绝对路径名或相对路径名;如果是相对路径名,则可以使用
os.path.join(os.path.dirname(path), result)
.如果 path 是字符串对象(直接或间接通过
PathLike
接口),结果也将是一个字符串对象,调用可能会引发一个unicodedecode错误。如果 path 是字节对象(直接或间接),结果将是字节对象。此功能还可以支持 paths relative to directory descriptors .
尝试解析可能包含链接的路径时,请使用
realpath()
正确处理递归和平台差异。Availability :Unix、Windows。
在 3.2 版更改: 添加了对Windows6.0(Vista)符号链接的支持。
3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object 在UNIX上。
在 3.8 版更改: 接受一 path-like object 和Windows上的bytes对象。
在 3.8 版更改: 添加了对目录连接的支持,并更改为返回替换路径(通常包括
\\?\
前缀)而不是先前返回的可选“打印名”字段。
- os.remove(path, *, dir_fd=None)¶
删除(删除)文件 path . 如果 path 是一个目录,一个
IsADirectoryError
提高了。使用rmdir()
删除目录。此功能可以支持 paths relative to directory descriptors .
在Windows上,试图删除正在使用的文件会引发异常;在UNIX上,目录项被删除,但分配给该文件的存储在原始文件不再使用之前不可用。
此函数在语义上与
unlink()
.提出一个 auditing event
os.remove
带着论据path
,dir_fd
.3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object .
- os.removedirs(name)¶
递归删除目录。作品像
rmdir()
但是,如果成功删除了叶目录,removedirs()
尝试依次删除中提到的每个父目录 path 直到出现错误(这被忽略,因为它通常意味着父目录不是空的)。例如,os.removedirs('foo/bar/baz')
将首先删除目录'foo/bar/baz'
,然后移除'foo/bar'
和'foo'
如果它们是空的。引发OSError
如果无法成功删除叶目录。提出一个 auditing event
os.remove
带着论据path
,dir_fd
.在 3.6 版更改: 接受一 path-like object .
- os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
重命名文件或目录 src 到 dst .如果 dst 存在,操作将失败
OSError
许多情况下的子类:在Windows上,如果 dst 存在一个
FileExistsError
总是被提升。关于UNIX,如果 src 是一个文件 dst 是一个目录,反之亦然,一个
IsADirectoryError
或ANotADirectoryError
将分别提升。如果两者都是目录和 dst 是空的, dst 将被静默替换。如果 dst 是一个非空目录,OSError
被提升。如果两者都是文件, dst 如果用户有权限,它将自动替换。如果 src 和 dst 在不同的文件系统上。如果成功,重命名将是一个原子操作(这是一个POSIX要求)。此函数可以支持指定 src_dir_fd 和/或 dst_dir_fd 供应 paths relative to directory descriptors .
如果要覆盖目标的跨平台,请使用
replace()
.提出一个 auditing event
os.rename
带着论据src
,dst
,src_dir_fd
,dst_dir_fd
.3.3 新版功能: 这个 src_dir_fd 和 dst_dir_fd 参数。
在 3.6 版更改: 接受一 path-like object 对于 src 和 dst .
- os.renames(old, new)¶
递归目录或文件重命名函数。作品像
rename()
,但首先尝试创建任何中间目录以使新路径名良好。重命名后,将使用removedirs()
.注解
如果您缺少删除叶目录或文件所需的权限,则此函数可能会失败,并生成新的目录结构。
提出一个 auditing event
os.rename
带着论据src
,dst
,src_dir_fd
,dst_dir_fd
.在 3.6 版更改: 接受一 path-like object 对于 old 和 new .
- os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
重命名文件或目录 src 到 dst . 如果 dst 是一个目录,
OSError
将被引发。如果 dst 存在并且是一个文件,如果用户有权限,它将自动替换。如果 src 和 dst 在不同的文件系统上。如果成功,重命名将是一个原子操作(这是一个POSIX要求)。此函数可以支持指定 src_dir_fd 和/或 dst_dir_fd 供应 paths relative to directory descriptors .
提出一个 auditing event
os.rename
带着论据src
,dst
,src_dir_fd
,dst_dir_fd
.3.3 新版功能.
在 3.6 版更改: 接受一 path-like object 对于 src 和 dst .
- os.rmdir(path, *, dir_fd=None)¶
删除目录 path .如果目录不存在或不为空,则
FileNotFoundError
或OSError
分别升高。为了删除整个目录树,shutil.rmtree()
可以使用。此功能可以支持 paths relative to directory descriptors .
提出一个 auditing event
os.rmdir
带着论据path
,dir_fd
.3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object .
- os.scandir(path='.')¶
返回的迭代器
os.DirEntry
与给定目录中的条目相对应的对象 path . 条目以任意顺序生成,特殊条目'.'
和'..'
不包括在内。如果在创建迭代器后将文件从目录中删除或添加到目录中,则未指定是否包含该文件的条目。使用
scandir()
而不是listdir()
可以显著提高还需要文件类型或文件属性信息的代码的性能,因为os.DirEntry
如果操作系统在扫描目录时提供此信息,则对象将公开此信息。所有os.DirEntry
方法可以执行系统调用,但is_dir()
和is_file()
通常只需要系统调用符号链接;os.DirEntry.stat()
在UNIX上总是需要系统调用,但在Windows上只需要一个用于符号链接。path 可能是 path-like object . 如果 path 属于类型
bytes
(直接或间接通过PathLike
接口)的类型name
和path
每个的属性os.DirEntry
将bytes
;在所有其他情况下,它们的类型为str
.此功能还可以支持 specifying a file descriptor ;文件描述符必须引用目录。
提出一个 auditing event
os.scandir
带着论证path
.这个
scandir()
迭代器支持 context manager 协议和具有以下方法:- scandir.close()¶
关闭迭代器并释放获取的资源。
当迭代器耗尽或被垃圾收集时,或者在迭代器期间发生错误时,将自动调用此函数。但是,建议显式调用它或使用
with
语句。3.6 新版功能.
下面的示例显示了
scandir()
显示给定目录中的所有文件(不包括目录) path 这不是从'.'
. 这个entry.is_file()
调用通常不会进行额外的系统调用::with os.scandir(path) as it: for entry in it: if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
注解
在基于Unix的系统上,
scandir()
使用系统的 opendir() 和 readdir() 功能。在Windows上,它使用win32 FindFirstFileW 和 FindNextFileW 功能。3.5 新版功能.
3.6 新版功能: 增加了对 context manager 协议和
close()
方法。如果Ascandir()
迭代器既没有耗尽也没有显式关闭ResourceWarning
将在其析构函数中发出。函数接受 path-like object .
在 3.7 版更改: 为添加了支持 file descriptors 在UNIX上。
- class os.DirEntry¶
对象生成者
scandir()
公开目录项的文件路径和其他文件属性。scandir()
将尽可能多地提供这些信息,而不进行额外的系统调用。当Astat()
或lstat()
系统调用完成后,os.DirEntry
对象将缓存结果。os.DirEntry
实例不打算存储在长寿命的数据结构中;如果您知道文件元数据已更改或调用后经过很长时间scandir()
,调用os.stat(entry.path)
获取最新信息。因为
os.DirEntry
方法可以进行操作系统调用,它们还可以OSError
. 如果需要对错误进行非常精细的控制,可以OSError
当调用其中一个os.DirEntry
方法和处理。直接用作 path-like object ,
os.DirEntry
实现PathLike
接口。属性和方法
os.DirEntry
实例如下:- name¶
条目的基本文件名,相对于
scandir()
path 参数。这个
name
属性将为bytes
如果scandir()
path 参数的类型为bytes
和str
否则。使用fsdecode()
解码字节文件名。
- path¶
条目的完整路径名:相当于
os.path.join(scandir_path, entry.name)
在哪里? scandir_path 是scandir()
path 参数。只有当scandir()
path 参数是绝对的。如果scandir()
path 参数是一个 file descriptor , thepath
属性与name
属性。这个
path
属性将为bytes
如果scandir()
path 参数的类型为bytes
和str
否则。使用fsdecode()
解码字节文件名。
- inode()¶
返回条目的inode编号。
结果缓存在
os.DirEntry
对象。使用os.stat(entry.path, follow_symlinks=False).st_ino
获取最新信息。在第一个未缓存的调用中,需要在Windows上进行系统调用,但在UNIX上不需要。
- is_dir(*, follow_symlinks=True)¶
返回
True
如果此条目是指向目录的目录或符号链接;返回False
如果条目是或指向任何其他类型的文件,或者它不再存在。如果 follow_symlinks 是
False
返回True
仅当此条目是目录时(不带符号链接);返回False
如果条目是任何其他类型的文件,或者不再存在。结果缓存在
os.DirEntry
对象,具有单独的缓存 follow_symlinksTrue
和False
. 调用os.stat()
随着stat.S_ISDIR()
获取最新信息。在第一个未缓存的调用中,大多数情况下不需要系统调用。具体地说,对于非符号链接,Windows或Unix都不需要系统调用,除非在某些Unix文件系统(如网络文件系统)上返回
dirent.d_type == DT_UNKNOWN
.如果条目是symlink,则需要系统调用才能跟踪symlink,除非 follow_symlinks 是False
.这种方法可以提高
OSError
,如PermissionError
,但是FileNotFoundError
被捕获而不被引发。
- is_file(*, follow_symlinks=True)¶
返回
True
如果此条目是指向文件的文件或符号链接;返回False
如果条目是或指向目录或其他非文件条目,或者它不再存在。如果 follow_symlinks 是
False
返回True
仅当此条目为文件时(不带以下符号链接);返回False
如果条目是目录或其他非文件条目,或者不再存在。结果缓存在
os.DirEntry
对象。缓存、系统调用和引发的异常is_dir()
.
- is_symlink()¶
返回
True
如果此条目是符号链接(即使已断开);返回False
如果条目指向一个目录或任何类型的文件,或者它不再存在。结果缓存在
os.DirEntry
对象。调用os.path.islink()
获取最新信息。在第一个未缓存的调用中,大多数情况下不需要系统调用。具体来说,Windows或Unix都不需要系统调用,除非在某些Unix文件系统(如网络文件系统)上返回
dirent.d_type == DT_UNKNOWN
.这种方法可以提高
OSError
,如PermissionError
,但是FileNotFoundError
被捕获而不被引发。
- stat(*, follow_symlinks=True)¶
返回A
stat_result
此项的对象。默认情况下,此方法遵循符号链接;若要统计符号链接,请添加follow_symlinks=False
参数。在UNIX上,此方法始终需要系统调用。在Windows上,如果 follow_symlinks 是
True
条目是一个重分析点(例如,符号链接或目录连接)。在Windows上
st_ino
,st_dev
和st_nlink
的属性stat_result
总是设置为零。调用os.stat()
获取这些属性。结果缓存在
os.DirEntry
对象,具有单独的缓存 follow_symlinksTrue
和False
. 调用os.stat()
获取最新信息。
注意,在
os.DirEntry
和pathlib.Path
. 尤其是,name
属性的含义与is_dir()
,is_file()
,is_symlink()
和stat()
方法。3.5 新版功能.
- os.stat(path, *, dir_fd=None, follow_symlinks=True)¶
获取文件或文件描述符的状态。执行相当于
stat()
给定路径上的系统调用。 path 可以指定为字符串或字节--直接或间接通过PathLike
接口——或者作为打开的文件描述符。返回Astat_result
对象。此函数通常遵循symlinks;若要统计symlink,请添加参数
follow_symlinks=False
或使用lstat()
.此功能可以支持 specifying a file descriptor 和 not following symlinks .
在窗户上,经过
follow_symlinks=False
将禁用以下所有名称代理项重分析点,包括符号链接和目录连接。将直接打开与链接不相似或操作系统无法遵循的其他类型的重分析点。当跟踪多个链接的链时,这可能会导致返回原始链接,而不是阻止完全遍历的非链接。在这种情况下,若要获取最终路径的stat结果,请使用os.path.realpath()
函数尽可能解析路径名并调用lstat()
关于结果。这不适用于悬挂符号链接或连接点,这将引发通常的例外情况。例子::
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
3.3 新版功能: 增加了 dir_fd 和 follow_symlinks 参数,指定文件描述符而不是路径。
在 3.6 版更改: 接受一 path-like object .
在 3.8 版更改: 在Windows上,现在遵循操作系统可以解析的所有重分析点,并传递
follow_symlinks=False
禁用以下所有名称代理项重分析点。如果操作系统到达无法跟踪的重分析点, stat 现在返回原始路径的信息,就像follow_symlinks=False
已指定而不是引发错误。
- class os.stat_result¶
其属性大致对应于
stat
结构。它用于os.stat()
,os.fstat()
和os.lstat()
.属性:
- st_mode¶
文件模式:文件类型和文件模式位(权限)。
- st_ino¶
依赖于平台,但如果非零,则唯一标识给定值的文件
st_dev
.通常:Unix上的inode编号,
这个 file index 在Windows上
- st_dev¶
此文件所在设备的标识符。
- st_nlink¶
硬链接数。
- st_uid¶
文件所有者的用户标识符。
- st_gid¶
文件所有者的组标识符。
- st_size¶
文件的大小(以字节为单位),如果是常规文件或符号链接。符号链接的大小是它包含的路径名的长度,不包含终止的空字节。
时间戳:
- st_atime¶
最近访问的时间,以秒为单位。
- st_mtime¶
最近内容修改的时间,以秒为单位。
- st_ctime¶
依赖平台:
Unix上最新元数据更改的时间,
在Windows上创建的时间,以秒为单位。
- st_atime_ns¶
最近访问的时间,以纳秒为整数表示。
- st_mtime_ns¶
最新内容修改的时间,以纳秒为整数表示。
- st_ctime_ns¶
依赖平台:
Unix上最新元数据更改的时间,
在Windows上创建的时间,以纳秒为整数表示。
注解
的确切含义和解决方法
st_atime
,st_mtime
和st_ctime
属性取决于操作系统和文件系统。例如,在使用FAT或FAT32文件系统的Windows系统上,st_mtime
具有2秒分辨率,并且st_atime
只有1天的分辨率。有关详细信息,请参阅操作系统文档。同样,尽管
st_atime_ns
,st_mtime_ns
和st_ctime_ns
通常用纳秒表示,许多系统不提供纳秒精度。在提供纳秒精度的系统上,用于存储的浮点对象st_atime
,st_mtime
和st_ctime
不能全部保留,这样会有点不准确。如果你需要准确的时间戳,你应该始终使用st_atime_ns
,st_mtime_ns
和st_ctime_ns
.在某些UNIX系统(如Linux)上,还可以使用以下属性:
- st_blksize¶
“首选”块大小用于有效的文件系统I/O。以较小的块写入文件可能导致无效的读-修改-重写。
- st_rdev¶
设备类型(如果是inode设备)。
- st_flags¶
文件的用户定义标志。
在其他UNIX系统(如freebsd)上,可以使用以下属性(但只有当root尝试使用这些属性时,才可以填写这些属性):
- st_gen¶
文件生成编号。
- st_birthtime¶
文件创建时间。
在Solaris和衍生产品上,还可以使用以下属性:
- st_fstype¶
唯一标识包含文件的文件系统类型的字符串。
在Mac OS系统上,还可以使用以下属性:
- st_rsize¶
文件的实际大小。
- st_creator¶
文件的创建者。
- st_type¶
文件类型。
在Windows系统上,以下属性也可用:
- st_file_attributes¶
Windows文件属性:
dwFileAttributes
会员BY_HANDLE_FILE_INFORMATION
结构返回者GetFileInformationByHandle()
. 见FILE_ATTRIBUTE_*
中的常量stat
模块。
- st_reparse_tag¶
什么时候?
st_file_attributes
有FILE_ATTRIBUTE_REPARSE_POINT
set,此字段包含标识重分析点类型的标记。见IO_REPARSE_TAG_*
中的常量stat
模块。
标准模块
stat
定义用于从中提取信息的函数和常量stat
结构。(在Windows上,某些项用虚拟值填充。)为了向后兼容,a
stat_result
实例也可以作为至少10个整数的元组进行访问,从而提供stat
结构,按顺序st_mode
,st_ino
,st_dev
,st_nlink
,st_uid
,st_gid
,st_size
,st_atime
,st_mtime
,st_ctime
. 一些实现可能会在末尾添加更多的项。为了与旧的python版本兼容,访问stat_result
作为一个元组,总是返回整数。3.3 新版功能: 增加了
st_atime_ns
,st_mtime_ns
和st_ctime_ns
成员。3.5 新版功能: 增加了
st_file_attributes
Windows上的成员。在 3.5 版更改: Windows现在返回文件索引为
st_ino
何时可用。3.7 新版功能: 增加了
st_fstype
solaris/derivatives的成员。3.8 新版功能: 增加了
st_reparse_tag
Windows上的成员。在 3.8 版更改: 在Windows上
st_mode
成员现在将特殊文件标识为S_IFCHR
,S_IFIFO
或S_IFBLK
适当时。
- os.statvfs(path)¶
表演一个
statvfs()
给定路径上的系统调用。返回值是一个对象,其属性描述给定路径上的文件系统,并对应于statvfs
结构,即:f_bsize
,f_frsize
,f_blocks
,f_bfree
,f_bavail
,f_files
,f_ffree
,f_favail
,f_flag
,f_namemax
,f_fsid
.为定义了两个模块级常量
f_flag
属性的位标志:如果ST_RDONLY
设置为,则文件系统以只读方式安装,如果ST_NOSUID
如果设置,则禁用或不支持setuid/setgid位的语义。为基于GNU/GLIBC的系统定义了额外的模块级常量。这些是
ST_NODEV
(不允许访问设备特殊文件)ST_NOEXEC
(不允许程序执行)ST_SYNCHRONOUS
(写操作立即同步)ST_MANDLOCK
(允许强制锁定FS)ST_WRITE
(在文件/目录/symlink上写入)ST_APPEND
(仅附加文件)ST_IMMUTABLE
(不可变文件)ST_NOATIME
(不更新访问时间)ST_NODIRATIME
(不更新目录访问时间)ST_RELATIME
(相对于mtime/ctime更新atime)。此功能可以支持 specifying a file descriptor .
Availability UNIX。
在 3.2 版更改: 这个
ST_RDONLY
和ST_NOSUID
添加了常量。3.3 新版功能: 添加了对指定的支持 path 作为打开的文件描述符。
在 3.4 版更改: 这个
ST_NODEV
,ST_NOEXEC
,ST_SYNCHRONOUS
,ST_MANDLOCK
,ST_WRITE
,ST_APPEND
,ST_IMMUTABLE
,ST_NOATIME
,ST_NODIRATIME
和ST_RELATIME
添加了常量。在 3.6 版更改: 接受一 path-like object .
3.7 新版功能: 补充
f_fsid
.
- os.supports_dir_fd¶
A
set
对象,指示os
模块接受其打开的文件描述符 dir_fd 参数。不同的平台提供不同的特性,而底层的功能python用于实现 dir_fd 参数在所有Python支持的平台上都不可用。为了一致性,可以支持 dir_fd 始终允许指定参数,但如果在本地不可用时使用该功能,则会引发异常。(说明None
对于 dir_fd 始终支持所有平台。)检查特定函数是否接受其 dir_fd 参数,使用
in
运算符开启supports_dir_fd
. 例如,此表达式的计算结果为True
如果os.stat()
接受打开的文件描述符 dir_fd 在本地平台上:os.stat in os.supports_dir_fd
目前 dir_fd 参数只能在Unix平台上工作;它们都不能在Windows上工作。
3.3 新版功能.
- os.supports_effective_ids¶
A
set
指示是否os.access()
许可证说明True
为其 effective_ids 本地平台上的参数。(说明False
对于 effective_ids 总是在所有平台上受支持。)如果本地平台支持,则集合将包含os.access()
否则它将是空的。此表达式的计算结果为
True
如果os.access()
支架effective_ids=True
在本地平台上:os.access in os.supports_effective_ids
目前 effective_ids 仅在UNIX平台上受支持;它不在Windows上工作。
3.3 新版功能.
- os.supports_fd¶
A
set
对象,指示os
模块许可证 path 参数作为本地平台上打开的文件描述符。不同的平台提供了不同的特性,而python用来接受打开文件描述符的底层功能是 path 参数在所有Python支持的平台上都不可用。确定特定函数是否允许为其指定打开的文件描述符 path 参数,使用
in
运算符开启supports_fd
. 例如,此表达式的计算结果为True
如果os.chdir()
接受打开的文件描述符 path 在您的本地平台上:os.chdir in os.supports_fd
3.3 新版功能.
- os.supports_follow_symlinks¶
A
set
对象,指示os
模块接受False
为了他们 follow_symlinks 本地平台上的参数。不同的平台提供不同的特性,而python用于实现的底层功能 follow_symlinks 并非所有平台都支持python。为了一致性,可以支持 follow_symlinks 始终允许指定参数,但如果在本地不可用时使用该功能,则会引发异常。(说明True
对于 follow_symlinks 始终支持所有平台。)检查特定函数是否接受
False
为其 follow_symlinks 参数,使用in
运算符开启supports_follow_symlinks
. 例如,此表达式的计算结果为True
如果您可以指定follow_symlinks=False
打电话时os.stat()
在本地平台上:os.stat in os.supports_follow_symlinks
3.3 新版功能.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
创建指向的符号链接 src 已命名 dst .
在Windows上,符号链接表示文件或目录,并且不会动态变形为目标。如果目标存在,将创建符号链接的类型以匹配。否则,符号链接将创建为目录,如果 target_is_directory 是
True
或者文件符号链接(默认)。在非Windows平台上, target_is_directory 被忽略。此功能可以支持 paths relative to directory descriptors .
提出一个 auditing event
os.symlink
带着论据src
,dst
,dir_fd
.Availability :Unix、Windows。
在 3.2 版更改: 添加了对Windows6.0(Vista)符号链接的支持。
3.3 新版功能: 增加了 dir_fd 参数,现在允许 target_is_directory 在非Windows平台上。
在 3.6 版更改: 接受一 path-like object 对于 src 和 dst .
在 3.8 版更改: 添加了对具有开发人员模式的Windows上的无关联符号链接的支持。
- os.sync()¶
强制将所有内容写入磁盘。
Availability UNIX。
3.3 新版功能.
- os.truncate(path, length)¶
截断对应于 path 所以最多 长度 字节大小。
此功能可以支持 specifying a file descriptor .
提出一个 auditing event
os.truncate
带着论据path
,length
.Availability :Unix、Windows。
3.3 新版功能.
在 3.5 版更改: 添加了对Windows的支持
在 3.6 版更改: 接受一 path-like object .
- os.unlink(path, *, dir_fd=None)¶
删除(删除)文件 path . 此函数在语义上与
remove()
;unlink
名称是它的传统Unix名称。请参阅以下文件:remove()
更多信息。提出一个 auditing event
os.remove
带着论据path
,dir_fd
.3.3 新版功能: 这个 dir_fd 参数。
在 3.6 版更改: 接受一 path-like object .
- os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)¶
设置指定文件的访问和修改时间 path .
utime()
取两个可选参数, 次 和 ns . 它们指定设置的时间 path 其用法如下:如果 ns 是指定的,它必须是窗体的2元组
(atime_ns, mtime_ns)
其中每个成员都是表示纳秒的int。如果 次 不是
None
,它必须是窗体的2元组(atime, mtime)
其中每个成员都是表示秒的int或float。如果 次 是
None
和 ns 未指定,这相当于指定ns=(atime_ns, mtime_ns)
其中两个时间都是当前时间。
为两者指定元组是错误的 次 和 ns .
请注意,您在此处设置的确切时间可能不会由后续的
stat()
调用,具体取决于操作系统记录访问和修改时间的分辨率;请参见stat()
. 保存准确时间的最佳方法是使用 st_atime_ns 和 st_mtime_ns 来自os.stat()
结果对象 ns 参数到 utime .此功能可以支持 specifying a file descriptor , paths relative to directory descriptors 和 not following symlinks .
提出一个 auditing event
os.utime
带着论据path
,times
,ns
,dir_fd
.3.3 新版功能: 添加了对指定的支持 path 作为打开的文件描述符, dir_fd , follow_symlinks 和 ns 参数。
在 3.6 版更改: 接受一 path-like object .
- os.walk(top, topdown=True, onerror=None, followlinks=False)¶
通过自上而下或自下而上浏览目录树来生成目录树中的文件名。对于树中根目录为的每个目录 top (包括 top 它本身),产生一个3元组
(dirpath, dirnames, filenames)
.直接路径 是一个字符串,目录的路径。 地名 是中子目录的名称列表 直接路径 (不包括)
'.'
和'..'
) 文件名 是中非目录文件的名称列表 直接路径 . 请注意,列表中的名称不包含路径组件。获取完整路径(以 top )到中的文件或目录 直接路径 做os.path.join(dirpath, name)
. 列表是否排序取决于文件系统。如果文件从中删除或添加到 直接路径 目录生成列表时,是否包含该文件的名称未指定。if可选参数 自顶向下 是
True
或者未指定,目录的三元组在其任何子目录的三元组之前生成(目录自上而下生成)。如果 自顶向下 是False
,目录的三元组是在其所有子目录的三元组之后生成的(目录是自下而上生成的)。无论价值 自顶向下 ,在生成目录及其子目录的元组之前检索子目录列表。什么时候? 自顶向下 是
True
,调用方可以修改 地名 就地列出(可能使用del
或切片分配),以及walk()
将只递归到其名称保留在中的子目录中 地名 ;这可用于精简搜索、强制执行特定的访问顺序,甚至用于通知walk()
关于调用方在恢复前创建或重命名的目录walk()
再一次。修改 地名 什么时候? 自顶向下 是False
对漫游行为没有影响,因为在自下而上模式下,目录位于 地名 之前生成的 直接路径 它本身就产生了。默认情况下,来自
scandir()
调用被忽略。if可选参数 出错 是指定的,它应该是一个函数;它将用一个参数调用,即OSError
实例。它可以报告错误以继续执行漫游,或者引发异常以中止漫游。请注意,文件名可用作filename
异常对象的属性。默认情况下,
walk()
不会进入解析为目录的符号链接。集合 跟踪链接 到True
在支持符号链接的系统上访问符号链接指向的目录。注解
注意设置 跟踪链接 到
True
如果链接指向自身的父目录,则可能导致无限递归。walk()
不跟踪它已访问的目录。此示例显示起始目录下每个目录中的非目录文件所占用的字节数,但它不在任何cvs子目录下查找:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directories
在下一个示例中(简单实现
shutil.rmtree()
)从树底向上行走是必要的,rmdir()
不允许在目录为空之前删除目录::# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))
提出一个 auditing event
os.walk
带着论据top
,topdown
,onerror
,followlinks
.在 3.5 版更改: 此函数现在调用
os.scandir()
而不是os.listdir()
,通过减少os.stat()
.在 3.6 版更改: 接受一 path-like object .
- os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)¶
它的行为和
walk()
,只不过它生成一个4元组(dirpath, dirnames, filenames, dirfd)
,它支持dir_fd
.直接路径 , 地名 和 filename 与相同
walk()
输出,以及 敌我识别 是指目录的文件描述符 直接路径 .此函数始终支持 paths relative to directory descriptors 和 not following symlinks . 但是,请注意,与其他函数不同,
fwalk()
的默认值 follow_symlinks 是False
.此示例显示起始目录下每个目录中的非目录文件所占用的字节数,但它不在任何cvs子目录下查找:
import os for root, dirs, files, rootfd in os.fwalk('python/Lib/email'): print(root, "consumes", end="") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end="") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directories
在下一个示例中,自下而上浏览树非常重要:
rmdir()
不允许在目录为空之前删除目录::# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)
提出一个 auditing event
os.fwalk
带着论据top
,topdown
,onerror
,follow_symlinks
,dir_fd
.Availability UNIX。
3.3 新版功能.
在 3.6 版更改: 接受一 path-like object .
在 3.7 版更改: 为添加了支持
bytes
路径。
- os.memfd_create(name[, flags=os.MFD_CLOEXEC])¶
创建一个匿名文件并返回引用它的文件描述符。 旗帜 一定是
os.MFD_*
系统上可用的常量(或它们的按位或按位组合)。默认情况下,新的文件描述符是 non-inheritable .中提供的名称 name 用作文件名,并将显示为目录中相应符号链接的目标。
/proc/self/fd/
. 显示的名称总是以前缀memfd:
仅用于调试目的。名称不会影响文件描述符的行为,因此多个文件可以具有相同的名称,而不会产生任何副作用。Availability :Linux 3.17或更高版本,带有glibc 2.27或更高版本。
3.8 新版功能.
- os.MFD_CLOEXEC¶
- os.MFD_ALLOW_SEALING¶
- os.MFD_HUGETLB¶
- os.MFD_HUGE_SHIFT¶
- os.MFD_HUGE_MASK¶
- os.MFD_HUGE_64KB¶
- os.MFD_HUGE_512KB¶
- os.MFD_HUGE_1MB¶
- os.MFD_HUGE_2MB¶
- os.MFD_HUGE_8MB¶
- os.MFD_HUGE_16MB¶
- os.MFD_HUGE_32MB¶
- os.MFD_HUGE_256MB¶
- os.MFD_HUGE_512MB¶
- os.MFD_HUGE_1GB¶
- os.MFD_HUGE_2GB¶
- os.MFD_HUGE_16GB¶
这些标志可以传递给
memfd_create()
.Availability :Linux 3.17或更高版本,带有glibc 2.27或更高版本。这个
MFD_HUGE*
标志仅在Linux 4.14之后可用。3.8 新版功能.
- os.eventfd(initval[, flags=os.EFD_CLOEXEC])¶
创建并返回事件文件描述符。文件描述符支持RAW
read()
和write()
在缓冲器大小为8的情况下,select()
,poll()
也很相似。请参见手册页 eventfd(2) 了解更多信息。缺省情况下,新文件描述符为 non-inheritable 。初始化 是事件计数器的初始值。初始值必须是32位无符号整数。请注意,虽然事件计数器是最大值为2的无符号64位整数,但初始值仅限于32位无符号整数。64 -2.
旗帜 可以从以下位置构造
EFD_CLOEXEC
,EFD_NONBLOCK
,以及EFD_SEMAPHORE
。如果
EFD_SEMAPHORE
并且事件计数器为非零,eventfd_read()
返回1并将计数器递减1。如果
EFD_SEMAPHORE
未指定,并且事件计数器为非零,eventfd_read()
返回当前事件计数器值并将计数器重置为零。如果事件计数器为零并且
EFD_NONBLOCK
未指定,eventfd_read()
块。eventfd_write()
递增事件计数器。如果写入操作将计数器递增到大于2的值,则写入块。64 -2.例子::
import os # semaphore with start value '1' fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC) try: # acquire semaphore v = os.eventfd_read(fd) try: do_work() finally: # release semaphore os.eventfd_write(fd, v) finally: os.close(fd)
Availability :Linux 2.6.27或更高版本,带有glibc 2.8或更高版本。
3.10 新版功能.
- os.eventfd_read(fd)¶
从以下位置读取值
eventfd()
文件描述符,并返回一个64位无符号整数。该函数不会验证 fd 是一种eventfd()
。Availability: See
eventfd()
3.10 新版功能.
- os.eventfd_write(fd, value)¶
将价值添加到
eventfd()
文件描述符。 价值 必须是64位无符号整数。该函数不会验证 fd 是一种eventfd()
。Availability: See
eventfd()
3.10 新版功能.
- os.EFD_CLOEXEC¶
设置新的执行时关闭标志
eventfd()
文件描述符。Availability: See
eventfd()
3.10 新版功能.
- os.EFD_NONBLOCK¶
设置
O_NONBLOCK
新建的状态标志eventfd()
文件描述符。Availability: See
eventfd()
3.10 新版功能.
- os.EFD_SEMAPHORE¶
为从
eventfd()
文件描述符。读取时,内部计数器递减1。Availability :Linux 2.6.30或更高版本,带有glibc 2.8或更高版本。
3.10 新版功能.
Linux扩展属性¶
3.3 新版功能.
这些功能仅在Linux上可用。
- os.getxattr(path, attribute, *, follow_symlinks=True)¶
返回扩展文件系统属性的值 属性 对于 path . 属性 可以是字节或str(直接或间接通过
PathLike
接口。如果它是str,则使用文件系统编码进行编码。此功能可以支持 specifying a file descriptor 和 not following symlinks .
提出一个 auditing event
os.getxattr
带着论据path
,attribute
.在 3.6 版更改: 接受一 path-like object 对于 path 和 属性 .
- os.listxattr(path=None, *, follow_symlinks=True)¶
返回上扩展文件系统属性的列表 path . 列表中的属性表示为使用文件系统编码解码的字符串。如果 path 是
None
,listxattr()
将检查当前目录。此功能可以支持 specifying a file descriptor 和 not following symlinks .
提出一个 auditing event
os.listxattr
带着论证path
.在 3.6 版更改: 接受一 path-like object .
- os.removexattr(path, attribute, *, follow_symlinks=True)¶
删除扩展文件系统属性 属性 从… path 。 属性 应为字节或字符串(直接或间接通过
PathLike
接口)。如果它是字符串,则使用 filesystem encoding and error handler 。此功能可以支持 specifying a file descriptor 和 not following symlinks .
提出一个 auditing event
os.removexattr
带着论据path
,attribute
.在 3.6 版更改: 接受一 path-like object 对于 path 和 属性 .
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶
设置扩展文件系统属性 属性 在……上面 path 至 价值 。 属性 必须是没有嵌入NULL的字节或字符串(直接或间接通过
PathLike
接口)。如果它是字符串,则使用 filesystem encoding and error handler 。 旗帜 可能是XATTR_REPLACE
或XATTR_CREATE
。如果XATTR_REPLACE
并且该属性不存在,EEXISTS
都会被举起。如果XATTR_CREATE
并且该属性已经存在,则不会创建该属性,并且ENODATA
都会被举起。此功能可以支持 specifying a file descriptor 和 not following symlinks .
注解
Linux内核版本中低于2.6.39的错误导致在某些文件系统上忽略flags参数。
提出一个 auditing event
os.setxattr
带着论据path
,attribute
,value
,flags
.在 3.6 版更改: 接受一 path-like object 对于 path 和 属性 .
- os.XATTR_SIZE_MAX¶
扩展属性值的最大大小。目前,这是Linux上的64 kib。
- os.XATTR_CREATE¶
这是中Flags参数的可能值
setxattr()
. 它指示操作必须创建属性。
- os.XATTR_REPLACE¶
这是中Flags参数的可能值
setxattr()
. 它指示操作必须替换现有属性。
过程管理¶
这些功能可用于创建和管理流程。
各种各样 exec*
函数获取加载到进程中的新程序的参数列表。在每种情况下,这些参数中的第一个作为自己的名称传递给新程序,而不是作为用户可能在命令行上键入的参数。对于C程序员来说,这是 argv[0]
传递到程序的 main()
. 例如, os.execv('/bin/echo', ['foo', 'bar'])
将只打印 bar
在标准输出上; foo
似乎被忽视了。
- os.abort()¶
生成一个
SIGABRT
向当前进程发送信号。在Unix上,默认行为是生成核心转储;在Windows上,进程立即返回退出代码3
. 请注意,调用此函数不会调用为注册的python信号处理程序SIGABRT
具有signal.signal()
.
- os.add_dll_directory(path)¶
向dll搜索路径添加路径。
此搜索路径用于解析导入的扩展模块的依赖项(模块本身通过sys.path解析),以及
ctypes
.通过调用删除目录 关闭() 在返回的对象上或在
with
语句。见 Microsoft documentation 有关如何加载DLL的详细信息。
提出一个 auditing event
os.add_dll_directory
带着论证path
.Availability :Windows。
3.8 新版功能: 以前版本的cpython将使用当前进程的默认行为解析dll。这导致了不一致性,例如有时只能搜索
PATH
或当前工作目录,以及操作系统功能,例如AddDllDirectory
没有效果。在3.8中,加载DLL的两种主要方式现在显式地覆盖整个进程的行为以确保一致性。见 porting notes 有关更新库的信息。
- os.execl(path, arg0, arg1, ...)¶
- os.execle(path, arg0, arg1, ..., env)¶
- os.execlp(file, arg0, arg1, ...)¶
- os.execlpe(file, arg0, arg1, ..., env)¶
- os.execv(path, args)¶
- os.execve(path, args, env)¶
- os.execvp(file, args)¶
- os.execvpe(file, args, env)¶
这些函数都执行一个新程序,替换当前进程;它们不会返回。在UNIX上,新的可执行文件被加载到当前进程中,并且将具有与调用方相同的进程ID。错误将报告为
OSError
例外情况。立即更换当前流程。未刷新打开的文件对象和描述符,因此如果这些打开的文件上可能存在缓冲数据,则应使用
sys.stdout.flush()
或os.fsync()
在调用exec*
功能。“L”和“V”的变体
exec*
函数在传递命令行参数的方式上有所不同。如果在编写代码时参数的数量是固定的,“l”变量可能是最容易使用的;单个参数只是成为execl*()
功能。当参数的数目是可变的时,“v”变量是很好的,参数在列表或元组中作为 args 参数。在这两种情况下,子进程的参数都应该以正在运行的命令的名称开始,但这不是强制执行的。包括靠近末端的“P”的变体 (
execlp()
,execlpe()
,execvp()
和execvpe()
)将使用PATH
用于定位程序的环境变量 file . 当环境被替换时(使用exec*e
变量,在下一段中讨论),新环境用作PATH
变量。其他变体,execl()
,execle()
,execv()
和execve()
,将不使用PATH
用于定位可执行文件的变量; path 必须包含适当的绝对或相对路径。为了
execle()
,execlpe()
,execve()
和execvpe()
(注意这些都以“e”结尾),即 env 参数必须是用于为新进程定义环境变量的映射(使用这些变量而不是当前进程的环境);函数execl()
,execlp()
,execv()
和execvp()
所有这些都会导致新进程继承当前进程的环境。为了
execve()
在某些平台上, path 也可以指定为打开的文件描述符。您的平台可能不支持此功能;您可以使用os.supports_fd
.如果它不可用,使用它将引发NotImplementedError
.提出一个 auditing event
os.exec
带着论据path
,args
,env
.Availability :Unix、Windows。
3.3 新版功能: 添加了对指定的支持 path 作为的打开文件描述符
execve()
.在 3.6 版更改: 接受一 path-like object .
- os._exit(n)¶
退出状态为的进程 n ,而不调用清理处理程序、刷新stdio缓冲区等。
定义了以下出口代码,并可用于 _exit()
,尽管它们不是必需的。这些通常用于用Python编写的系统程序,例如邮件服务器的外部命令传递程序。
注解
其中一些可能在所有的Unix平台上都不可用,因为存在一些变化。这些常量是在底层平台定义的地方定义的。
- os.EX_OK¶
表示没有发生错误的退出代码。
Availability UNIX。
- os.EX_USAGE¶
退出代码,这意味着命令的使用不正确,例如给出的参数数目错误。
Availability UNIX。
- os.EX_DATAERR¶
表示输入数据不正确的退出代码。
Availability UNIX。
- os.EX_NOINPUT¶
表示输入文件不存在或不可读的退出代码。
Availability UNIX。
- os.EX_NOUSER¶
表示指定用户不存在的退出代码。
Availability UNIX。
- os.EX_NOHOST¶
表示指定主机不存在的退出代码。
Availability UNIX。
- os.EX_UNAVAILABLE¶
表示所需服务不可用的退出代码。
Availability UNIX。
- os.EX_SOFTWARE¶
表示检测到内部软件错误的退出代码。
Availability UNIX。
- os.EX_OSERR¶
退出代码,表示检测到操作系统错误,例如无法复刻或创建管道。
Availability UNIX。
- os.EX_OSFILE¶
退出代码,这意味着某些系统文件不存在、无法打开或有其他类型的错误。
Availability UNIX。
- os.EX_CANTCREAT¶
退出代码,表示无法创建用户指定的输出文件。
Availability UNIX。
- os.EX_IOERR¶
退出代码,这意味着对某个文件执行I/O时出错。
Availability UNIX。
- os.EX_TEMPFAIL¶
表示发生临时故障的退出代码。这表示可能不是真正的错误,例如在可重试操作期间无法建立的网络连接。
Availability UNIX。
- os.EX_PROTOCOL¶
退出代码,表示协议交换非法、无效或不被理解。
Availability UNIX。
- os.EX_NOPERM¶
退出代码,表示权限不足,无法执行操作(但不适用于文件系统问题)。
Availability UNIX。
- os.EX_CONFIG¶
表示发生某种配置错误的退出代码。
Availability UNIX。
- os.EX_NOTFOUND¶
表示“找不到条目”的退出代码。
Availability UNIX。
- os.fork()¶
复刻子进程。返回
0
在子进程中,子进程ID在父进程中。如果发生错误OSError
提高了。注意,一些平台,包括FreeBSD<=6.3和Cygwin,在使用
fork()
从一根线。提出一个 auditing event
os.fork
没有参数。在 3.8 版更改: 调用
fork()
在子解释器中不再支持 (RuntimeError
提高了)。警告
见
ssl
对于使用带有fork()的ssl模块的应用程序。Availability UNIX。
- os.forkpty()¶
复刻子进程,使用新的伪终端作为子进程的控制终端。返回一对
(pid, fd)
在哪里 pid 是0
在子级中,新子级的进程ID在父级中,以及 fd 是伪终端主端的文件描述符。对于更便携的方法,请使用pty
模块。如果发生错误OSError
提高了。提出一个 auditing event
os.forkpty
没有参数。在 3.8 版更改: 调用
forkpty()
在子解释器中不再支持 (RuntimeError
提高了)。Availability :一些风格的Unix。
- os.kill(pid, sig)¶
发送信号 sig 对过程 pid . 主机平台上可用的特定信号的常量在
signal
模块。Windows:
signal.CTRL_C_EVENT
和signal.CTRL_BREAK_EVENT
信号是特殊的信号,只能发送到共享一个控制台窗口的控制台进程,例如一些子进程。任何其他价值 sig 将导致TerminateProcess API无条件终止进程,并且退出代码将设置为 sig . 的Windows版本kill()
另外,需要杀死进程句柄。提出一个 auditing event
os.kill
带着论据pid
,sig
.3.2 新版功能: Windows支持。
- os.killpg(pgid, sig)¶
发送信号 sig 到流程组 pgid .
提出一个 auditing event
os.killpg
带着论据pgid
,sig
.Availability UNIX。
- os.nice(increment)¶
添加 增量 过程的“美好”。回归新的美好。
Availability UNIX。
- os.pidfd_open(pid, flags=0)¶
返回引用进程的文件描述符 pid . 此描述符可用于执行流程管理,而无需争用和信号。这个 旗帜 参数是为将来的扩展提供的;当前未定义标志值。
见 pidfd_open(2) 详细信息请参见手册页。
Availability :Linux 5.3版+
3.9 新版功能.
- os.plock(op)¶
将程序段锁定到内存中。价值 op (定义在
<sys/lock.h>
)确定锁定的段。Availability UNIX。
- os.popen(cmd, mode='r', buffering=- 1)¶
打开命令的管道 cmd . 返回值是一个连接到管道的打开的文件对象,根据 mode 是
'r'
(默认)或'w'
. 这个 缓冲 参数的含义与内置的对应参数相同open()
功能。返回的文件对象读取或写入文本字符串,而不是字节。这个
close
方法返回None
如果子进程成功退出,或者如果出现错误,则返回子进程的返回代码。在POSIX系统中,如果返回代码为正数,则表示进程的返回值左移一个字节。如果返回代码为负数,则进程将由返回代码的负值给出的信号终止。(例如,返回值可能是- signal.SIGKILL
如果子进程被终止。)在Windows系统上,返回值包含子进程的带符号整数返回代码。在UNIX上,
waitstatus_to_exitcode()
可用于转换close
方法结果(退出状态)如果不是None
. 在Windows上close
方法结果直接是退出代码(或None
)这是使用
subprocess.Popen
;请参阅该类的文档,以获取更强大的方法来管理子流程和与之通信。
- os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
包裹
posix_spawn()
从python使用的C库API。大多数用户应该使用
subprocess.run()
而不是posix_spawn()
.仅位置参数 path , args 和 env 类似于
execve()
.这个 path 参数是可执行文件的路径。这个 path 应该包含一个目录。使用
posix_spawnp()
若要传递没有目录的可执行文件,请执行以下操作。这个 file_actions 参数可以是一系列元组,描述在C库实现的
fork()
和exec()
步骤。每个元组中的第一项必须是下面列出的三个类型指示符之一,用于描述其余的元组元素:- os.POSIX_SPAWN_OPEN¶
(
os.POSIX_SPAWN_OPEN
, fd, path, flags, mode)表演
os.dup2(os.open(path, flags, mode), fd)
.
- os.POSIX_SPAWN_CLOSE¶
(
os.POSIX_SPAWN_CLOSE
, fd)表演
os.close(fd)
.
- os.POSIX_SPAWN_DUP2¶
(
os.POSIX_SPAWN_DUP2
, fd, new_fd)表演
os.dup2(fd, new_fd)
.
这些元组对应于C库
posix_spawn_file_actions_addopen()
,posix_spawn_file_actions_addclose()
和posix_spawn_file_actions_adddup2()
用于准备的API调用posix_spawn()
调用它自己。这个 SETPGROUP 参数将把子进程组设置为指定的值。如果指定的值为0,则子进程组ID将与其进程ID相同。如果 SETPGROUP 未设置,子进程将继承父进程组ID。此参数对应于C库
POSIX_SPAWN_SETPGROUP
flag。如果 再结晶 论证是
True
它会将子进程的有效uid和gid重置为父进程的实际uid和gid。如果参数是False
然后,子项保留父母的有效uid和gid。在这两种情况下,如果在可执行文件上启用了set user id和set group id权限位,它们的效果将覆盖有效uid和gid的设置。此参数对应于C库POSIX_SPAWN_RESETIDS
flag。如果 塞西德 论证是
True
,它将为创建新的会话ID posix_spawn . 塞西德 要求POSIX_SPAWN_SETSID
或POSIX_SPAWN_SETSID_NP
flag。否则,NotImplementedError
提高了。这个 设置SIGSIM掩码 参数将把信号屏蔽设置为指定的信号集。如果不使用该参数,则子级继承父级的信号掩码。此参数对应于C库
POSIX_SPAWN_SETSIGMASK
flag。这个 西格迪夫 参数将重置指定集中所有信号的处理。此参数对应于C库
POSIX_SPAWN_SETSIGDEF
flag。这个 调度程序 参数必须是包含(可选)计划程序策略和的实例的元组
sched_param
使用调度程序参数。一个值None
在计划程序策略的位置表示没有提供。此参数是C库的组合POSIX_SPAWN_SETSCHEDPARAM
和POSIX_SPAWN_SETSCHEDULER
flag。提出一个 auditing event
os.posix_spawn
带着论据path
,argv
,env
.3.8 新版功能.
Availability UNIX。
- os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
包裹
posix_spawnp()
从python使用的C库API。类似
posix_spawn()
除了系统搜索 可执行文件 文件在目录列表中PATH
环境变量(与execvp(3)
)提出一个 auditing event
os.posix_spawn
带着论据path
,argv
,env
.3.8 新版功能.
Availability 见
posix_spawn()
文档。
- os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)¶
注册新子进程复刻时要执行的可调用文件,使用
os.fork()
或者类似的过程复制API。参数是可选的,仅限关键字。每个指定一个不同的调用点。before 在复刻子进程之前调用的函数。
after_in_parent 是在子进程复刻后从父进程调用的函数。
after_in_child 是从子进程调用的函数。
只有当控件预期返回到Python解释器时,才会进行这些调用。典型
subprocess
启动不会触发它们,因为子项不会重新进入解释器。以相反的注册顺序调用在复刻前注册执行的函数。在复刻后注册执行的函数(父函数或子函数)按注册顺序调用。
注意
fork()
由第三方C代码进行的调用不能调用这些函数,除非它显式调用PyOS_BeforeFork()
,PyOS_AfterFork_Parent()
和PyOS_AfterFork_Child()
.无法注销函数。
Availability UNIX。
3.7 新版功能.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
执行程序 path 在一个新的过程中。
(注意
subprocess
模块为生成新进程和检索其结果提供了更强大的工具;使用该模块比使用这些函数更好。特别是检查 用替换旧函数 subprocess 模块 部分)如果 mode 是
P_NOWAIT
,此函数返回新进程的进程ID;如果 mode 是P_WAIT
,如果进程正常退出,则返回该进程的退出代码,或者-signal
在哪里 信号 是终止进程的信号。在Windows上,进程ID实际上是进程句柄,因此可以与waitpid()
功能。注意在VxWorks上,此函数不返回
-signal
当新进程终止时。相反,它会引发OSError异常。“L”和“V”的变体
spawn*
函数在传递命令行参数的方式上有所不同。如果在编写代码时参数的数量是固定的,“l”变量可能是最容易使用的;单个参数只是成为spawnl*()
功能。当参数的数目是可变的时,“v”变量是很好的,参数在列表或元组中作为 args 参数。在这两种情况下,子进程的参数必须以正在运行的命令的名称开始。包括靠近末端的第二个“P”的变体 (
spawnlp()
,spawnlpe()
,spawnvp()
和spawnvpe()
)将使用PATH
用于定位程序的环境变量 file . 当环境被替换时(使用spawn*e
变量,在下一段中讨论),新环境用作PATH
变量。其他变体,spawnl()
,spawnle()
,spawnv()
和spawnve()
,将不使用PATH
用于定位可执行文件的变量; path 必须包含适当的绝对或相对路径。为了
spawnle()
,spawnlpe()
,spawnve()
和spawnvpe()
(注意这些都以“e”结尾),即 env 参数必须是一个映射,用于定义新流程的环境变量(使用这些变量而不是当前流程的环境);函数spawnl()
,spawnlp()
,spawnv()
和spawnvp()
所有这些都会导致新进程继承当前进程的环境。注意键和值 env 字典必须是字符串;无效的键或值将导致函数失败,返回值为127
.例如,以下调用
spawnlp()
和spawnvpe()
相当于:import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
提出一个 auditing event
os.spawn
带着论据mode
,path
,args
,env
.Availability :Unix、Windows。
spawnlp()
,spawnlpe()
,spawnvp()
和spawnvpe()
在Windows上不可用。spawnle()
和spawnve()
Windows上的线程不安全;我们建议您使用subprocess
模块代替。在 3.6 版更改: 接受一 path-like object .
- os.P_NOWAIT¶
- os.P_NOWAITO¶
的可能值 mode 参数
spawn*
功能系列。如果给出这些值中的任何一个,则spawn*()
函数将在创建新进程后立即返回,返回值为进程ID。Availability :Unix、Windows。
- os.P_WAIT¶
的可能值 mode 参数
spawn*
功能系列。如果这是作为 mode , thespawn*()
函数在新进程运行到完成之前不会返回,并且将返回运行成功的进程的退出代码,或者-signal
如果信号终止了进程。Availability :Unix、Windows。
- os.P_DETACH¶
- os.P_OVERLAY¶
的可能值 mode 参数
spawn*
功能系列。与上面列出的相比,它们的便携性较差。P_DETACH
类似于P_NOWAIT
但新进程与调用进程的控制台分离。如果P_OVERLAY
如果使用,则将替换当前进程;将spawn*
函数将不返回。Availability :Windows。
- os.startfile(path[, operation])¶
用关联的应用程序启动文件。
什么时候? 操作 未指定或
'open'
,这类似于在Windows资源管理器中双击文件,或将文件名作为参数提供给 start 来自交互命令shell的命令:该文件以其扩展名关联的任何应用程序(如果有)打开。当另一个 操作 如果给定,它必须是一个“命令动词”,指定应该对文件执行什么操作。微软记录的常见动词有
'print'
和'edit'
(用于文件)以及'explore'
和'find'
(用于目录)。startfile()
启动关联的应用程序后立即返回。没有等待应用程序关闭的选项,也没有检索应用程序退出状态的方法。这个 path 参数是相对于当前目录的。如果要使用绝对路径,请确保第一个字符不是斜线 ('/'
);基础Win32ShellExecute()
如果是,函数就不工作。使用os.path.normpath()
函数以确保为Win32正确编码路径。为了减少解释器启动开销,win32
ShellExecute()
在首次调用此函数之前,不会解析函数。如果无法解析函数,NotImplementedError
将被引发。提出一个 auditing event
os.startfile
带着论据path
,operation
.Availability :Windows。
- os.system(command)¶
在子shell中执行命令(字符串)。这是通过调用标准的C函数来实现的
system()
也有同样的局限性。改变到sys.stdin
等不反映在已执行命令的环境中。如果 命令 生成任何输出,它将被发送到解释器标准输出流。在Unix上,返回值是以指定格式编码的进程的退出状态。
wait()
. 注意,posix没有指定c的返回值的含义。system()
函数,所以python函数的返回值依赖于系统。在Windows上,返回值是运行后由系统外壳程序返回的值。 命令 . 外壳由Windows环境变量提供
COMSPEC
:通常是 cmd.exe 返回命令运行的退出状态;在使用非本机shell的系统上,请参阅shell文档。这个
subprocess
模块为生成新进程和检索其结果提供了更强大的工具;使用该模块比使用此函数更好。查看 用替换旧函数 subprocess 模块 节中subprocess
一些有用配方的文档。在UNIX上,
waitstatus_to_exitcode()
可用于将结果(退出状态)转换为退出代码。在Windows上,结果直接是退出代码。提出一个 auditing event
os.system
带着论证command
.Availability :Unix、Windows。
- os.times()¶
返回当前全局进程时间。返回值是一个具有五个属性的对象:
user
-用户时间system
-系统时间children_user
-所有子进程的用户时间children_system
-所有子进程的系统时间elapsed
-自过去某个固定点以来经过的实时时间
为了向后兼容,此对象的行为也类似于包含
user
,system
,children_user
,children_system
和elapsed
按这个顺序。请参见Unix手册页 times(2) 和 times(3) Unix上的手动页面或 the GetProcessTimes MSDN 在窗户上。仅在Windows上
user
和system
已知;其他属性为零。Availability :Unix、Windows。
在 3.3 版更改: 返回从元组更改为具有命名属性的类似于元组的对象的类型。
- os.wait()¶
等待子进程完成,返回一个包含其PID和退出状态指示的元组:一个16位数字,其低字节是终止进程的信号号,其高字节是退出状态(如果信号号为零);如果生成了核心文件,则设置低字节的高位。
waitstatus_to_exitcode()
可用于将退出状态转换为退出代码。Availability UNIX。
参见
waitpid()
可用于等待特定子进程完成,并具有更多选项。
- os.waitid(idtype, id, options)¶
等待一个或多个子进程完成。 ID-型 可以是
P_PID
,P_PGID
,P_ALL
或P_PIDFD
在Linux上。 id 指定要等待的PID。 选项 由一个或多个WEXITED
,WSTOPPED
或WCONTINUED
此外,还可以使用WNOHANG
或WNOWAIT
. 返回值是表示包含在siginfo_t
结构,即:si_pid
,si_uid
,si_signo
,si_status
,si_code
或None
如果WNOHANG
已指定,并且没有处于可等待状态的子级。Availability UNIX。
3.3 新版功能.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
这些是的可能值 ID-型 在里面
waitid()
. 它们如何影响 id 被解释。Availability UNIX。
3.3 新版功能.
- os.P_PIDFD¶
这是Linux特有的 ID-型 这表明 id 是引用进程的文件描述符。
Availability :Linux 5.4版+
3.9 新版功能.
- os.WEXITED¶
- os.WSTOPPED¶
- os.WNOWAIT¶
可用于 option 在里面
waitid()
指定要等待的子信号。Availability UNIX。
3.3 新版功能.
- os.CLD_EXITED¶
- os.CLD_KILLED¶
- os.CLD_DUMPED¶
- os.CLD_TRAPPED¶
- os.CLD_STOPPED¶
- os.CLD_CONTINUED¶
这些是的可能值
si_code
在返回的结果中waitid()
.Availability UNIX。
3.3 新版功能.
在 3.9 版更改: 补充
CLD_KILLED
和CLD_STOPPED
价值观。
- os.waitpid(pid, options)¶
此函数的详细信息在UNIX和Windows上有所不同。
在Unix上:等待进程ID给定的子进程完成 pid ,并返回一个包含其进程ID和退出状态指示(编码为
wait()
)调用的语义受整数值的影响。 option ,应该是0
用于正常操作。如果 pid 大于
0
,waitpid()
请求该特定进程的状态信息。如果 pid 是0
,请求是当前进程的进程组中任何子进程的状态。如果 pid 是-1
,该请求属于当前进程的任何子进程。如果 pid 小于-1
,请求进程组中的任何进程的状态-pid
(绝对值 pid )安
OSError
当syscall返回-1时,用errno值引发。在Windows上:等待进程句柄给定的进程完成 pid ,并返回包含 pid ,其退出状态左移8位(移位使跨平台使用该功能更容易)。一 pid 小于或等于
0
在Windows上没有特殊意义,并引发异常。整数的值 option 没有效果。 pid 可以引用ID已知的任何进程,不一定是子进程。这个spawn*
用调用的函数P_NOWAIT
退回合适的工艺手柄。waitstatus_to_exitcode()
可用于将退出状态转换为退出代码。在 3.5 版更改: 如果系统调用被中断且信号处理程序没有引发异常,则函数现在将重试系统调用,而不是引发
InterruptedError
例外(见) PEP 475 理由)。
- os.wait3(options)¶
类似
waitpid()
,除非未提供进程ID参数,并且返回包含子进程ID、退出状态指示和资源使用信息的3元素元组。参照resource
getrusage()
有关资源使用信息的详细信息。选项参数与提供给waitpid()
和wait4()
.waitstatus_to_exitcode()
可用于将退出状态转换为退出代码。Availability UNIX。
- os.wait4(pid, options)¶
类似
waitpid()
,除了包含子进程ID、退出状态指示和资源使用信息的3元素元组外,将返回。参照resource
getrusage()
有关资源使用信息的详细信息。关于wait4()
与提供给waitpid()
.waitstatus_to_exitcode()
可用于将退出状态转换为退出代码。Availability UNIX。
- os.waitstatus_to_exitcode(status)¶
将等待状态转换为退出代码。
在UNIX上:
如果进程正常退出(如果
WIFEXITED(status)
为true),返回进程退出状态(returnWEXITSTATUS(status)
):结果大于或等于0。如果进程被信号终止(如果
WIFSIGNALED(status)
是真的),返回-signum
在哪里? 符号 是导致进程终止的信号数(返回-WTERMSIG(status)
):结果小于0。否则,提高
ValueError
.
在Windows上,返回 地位 右移8位。
在Unix上,如果正在跟踪进程或
waitpid()
被召唤WUNTRACED
选项,调用者必须首先检查WIFSTOPPED(status)
是真的。如果WIFSTOPPED(status)
是真的。参见
WIFEXITED()
,WEXITSTATUS()
,WIFSIGNALED()
,WTERMSIG()
,WIFSTOPPED()
,WSTOPSIG()
功能。3.9 新版功能.
- os.WNOHANG¶
选择权
waitpid()
如果没有可用的子进程状态,则立即返回。函数返回(0, 0)
在这种情况下。Availability UNIX。
- os.WCONTINUED¶
如果自上次报告子进程的状态后,子进程已从任务控制停止继续,则此选项将导致子进程被报告。
Availability :一些Unix系统。
- os.WUNTRACED¶
如果子进程已停止,但自停止后尚未报告其当前状态,则此选项将导致报告子进程。
Availability UNIX。
以下函数采用由返回的进程状态代码 system()
, wait()
或 waitpid()
作为参数。它们可用于确定过程的处置。
- os.WCOREDUMP(status)¶
返回
True
如果为进程生成了核心转储,则返回False
.只有当
WIFSIGNALED()
是真的。Availability UNIX。
- os.WIFCONTINUED(status)¶
返回
True
如果已停止的子进程已通过SIGCONT
(如果进程已从作业控制停止继续),否则返回False
.见
WCONTINUED
选择权。Availability UNIX。
- os.WIFSTOPPED(status)¶
返回
True
如果进程是通过发送信号而停止的,则返回False
.WIFSTOPPED()
只返回True
如果waitpid()
电话是用WUNTRACED
选项或跟踪进程的时间(请参见 ptrace(2) )Availability UNIX。
- os.WIFSIGNALED(status)¶
返回
True
如果进程被信号终止,则返回False
.Availability UNIX。
- os.WIFEXITED(status)¶
返回
True
如果进程正常退出,即通过调用exit()
或_exit()
,或者从main()
;否则返回False
.Availability UNIX。
- os.WEXITSTATUS(status)¶
返回进程退出状态。
只有当
WIFEXITED()
是真的。Availability UNIX。
- os.WSTOPSIG(status)¶
返回导致进程停止的信号。
只有当
WIFSTOPPED()
是真的。Availability UNIX。
- os.WTERMSIG(status)¶
返回导致进程终止的信号的编号。
只有当
WIFSIGNALED()
是真的。Availability UNIX。
与调度程序的接口¶
这些函数控制操作系统如何分配进程的CPU时间。它们仅在某些UNIX平台上可用。有关更详细的信息,请参阅UNIX手册页。
3.3 新版功能.
如果操作系统支持以下计划策略,则会公开这些策略。
- os.SCHED_OTHER¶
默认计划策略。
- os.SCHED_BATCH¶
用于CPU密集型进程的计划策略,这些进程试图保留计算机其余部分的交互性。
- os.SCHED_IDLE¶
极低优先级后台任务的计划策略。
- os.SCHED_SPORADIC¶
零星服务器程序的调度策略。
- os.SCHED_FIFO¶
先进先出的调度策略。
- os.SCHED_RR¶
循环调度策略。
- os.SCHED_RESET_ON_FORK¶
此标志可以与任何其他计划策略一起使用。当具有此标志的进程设置为复刻时,其子进程的调度策略和优先级将重置为默认值。
- class os.sched_param(sched_priority)¶
此类表示在
sched_setparam()
,sched_setscheduler()
和sched_getparam()
. 它是不变的。目前,只有一个可能的参数:
- sched_priority¶
调度策略的调度优先级。
- os.sched_get_priority_min(policy)¶
获取的最小优先级值 policy . policy 是上面的调度策略常量之一。
- os.sched_get_priority_max(policy)¶
获取的最大优先级值 policy . policy 是上面的调度策略常量之一。
- os.sched_setscheduler(pid, policy, param)¶
为具有PID的进程设置调度策略 pid . 一 pid 0表示调用进程。 policy 是上面的调度策略常量之一。 帕拉姆 是一个
sched_param
实例。
- os.sched_getscheduler(pid)¶
返回带有PID的进程的调度策略 pid . 一 pid 0表示调用进程。结果是上面的调度策略常量之一。
- os.sched_setparam(pid, param)¶
为带有PID的进程设置调度参数 pid . 一 pid 0表示调用进程。 帕拉姆 是一个
sched_param
实例。
- os.sched_getparam(pid)¶
将计划参数返回为
sched_param
PID流程实例 pid . 一 pid 0表示调用进程。
- os.sched_rr_get_interval(pid)¶
以秒为单位返回带有PID的进程的循环量 pid . 一 pid 0表示调用进程。
- os.sched_yield()¶
自愿放弃CPU。
- os.sched_setaffinity(pid, mask)¶
用PID限制过程 pid (或当前进程,如果为零)到一组CPU。 mask 是表示进程应限制到的CPU集的整数的iterable。
- os.sched_getaffinity(pid)¶
用PID返回进程的CPU集 pid (或当前进程,如果为零)被限制为。
其他系统信息¶
- os.confstr(name)¶
返回字符串值的系统配置值。 name 指定要检索的配置值;它可以是一个字符串,该字符串是定义的系统值的名称;这些名称在许多标准(POSIX、UNIX 95、UNIX 98和其他标准)中指定。有些平台还定义了其他名称。主机操作系统已知的名称作为
confstr_names
字典。对于未包含在该映射中的配置变量,传递一个整数 name 也可接受。如果配置值由指定 name 未定义,
None
返回。如果 name 是一个字符串,未知,
ValueError
提高了。如果特定值 name 主机系统不支持,即使它包含在confstr_names
,一个OSError
提出与errno.EINVAL
错误号。Availability UNIX。
- os.confstr_names¶
字典映射名称被接受
confstr()
到主机操作系统为这些名称定义的整数值。这可用于确定系统已知的名称集。Availability UNIX。
- os.cpu_count()¶
返回系统中的CPU数。返回
None
如果不确定。这个数字不等于当前进程可以使用的CPU数量。可用CPU的数量可以通过
len(os.sched_getaffinity(0))
3.4 新版功能.
- os.getloadavg()¶
返回过去1、5和15分钟内系统运行队列中平均的进程数或引发数
OSError
如果无法获得平均负荷。Availability UNIX。
- os.sysconf(name)¶
返回整数值系统配置值。如果配置值由指定 name 未定义,
-1
返回。关于 name 参数用于confstr()
这里也适用;提供已知名称信息的字典由sysconf_names
.Availability UNIX。
- os.sysconf_names¶
字典映射名称被接受
sysconf()
到主机操作系统为这些名称定义的整数值。这可用于确定系统已知的名称集。Availability UNIX。
以下数据值用于支持路径操作操作。这些是为所有平台定义的。
对路径名的更高级别操作在 os.path
模块。
- os.sep¶
操作系统用来分隔路径名组件的字符。这是
'/'
对于POSIX和'\\'
对于Windows。注意,知道这不足以解析或连接路径名---使用os.path.split()
和os.path.join()
---但有时也有用。也可通过os.path
.
- os.linesep¶
用于分隔(或者更确切地说,终止)当前平台上的行的字符串。这可以是单个字符,例如
'\n'
例如,对于POSIX或多个字符,'\r\n'
对于Windows。不要使用 os.linesep 在以文本模式(默认)写入打开的文件时用作行终止符;使用单个'\n'
相反,在所有平台上。
- os.RTLD_LAZY¶
- os.RTLD_NOW¶
- os.RTLD_GLOBAL¶
- os.RTLD_LOCAL¶
- os.RTLD_NODELETE¶
- os.RTLD_NOLOAD¶
- os.RTLD_DEEPBIND¶
用于的标志
setdlopenflags()
和getdlopenflags()
功能。请参见Unix手册页 dlopen(3) 不同的flag意味着什么。3.3 新版功能.
随机数¶
- os.getrandom(size, flags=0)¶
达到 size 随机字节。函数返回的字节数可能少于请求的字节数。
这些字节可用于种子用户空间随机数生成器或用于加密目的。
getrandom()
依赖于从设备驱动程序和其他环境噪声源收集的熵。不必要地读取大量数据将对/dev/random
和/dev/urandom
设备。flags参数是一个位掩码,可以包含零个或多个以下值或同时包含这些值:
os.GRND_RANDOM
和GRND_NONBLOCK
.也见 Linux getrandom() manual page .
Availability :Linux 3.17及更高版本。
3.6 新版功能.
- os.urandom(size)¶
返回一个字符串 size 适合加密使用的随机字节。
此函数从操作系统特定的随机性源返回随机字节。对于加密应用程序来说,返回的数据应该是不可预测的,尽管它的确切质量取决于操作系统的实现。
在Linux上,如果
getrandom()
系统调用可用,它在阻塞模式下使用:阻塞,直到系统urandom熵池初始化(内核收集128位熵)。见 PEP 524 理由是。在Linux上getrandom()
函数可用于在非阻塞模式下获取随机字节(使用GRND_NONBLOCK
或者轮询,直到初始化系统urandom熵池。在类Unix系统上,随机字节从
/dev/urandom
装置。如果/dev/urandom
设备不可用或不可读,NotImplementedError
引发异常。在Windows上,它将使用
CryptGenRandom()
.参见
这个
secrets
模块提供更高级别的功能。有关您平台提供的随机数生成器的易于使用的接口,请参见random.SystemRandom
.在 3.6.0 版更改: 在Linux上,
getrandom()
现在用于阻塞模式以提高安全性。在 3.5.2 版更改: 在Linux上,如果
getrandom()
系统调用块(urandom熵池尚未初始化),返回到读取/dev/urandom
.在 3.5 版更改: 在Linux 3.17及更高版本上,
getrandom()
系统调用现在在可用时使用。在OpenBSD 5.6及更高版本上,Cgetentropy()
现在使用函数。这些函数避免使用内部文件描述符。
- os.GRND_NONBLOCK¶
默认情况下,当从
/dev/random
,getrandom()
如果没有可用的随机字节,以及从/dev/urandom
如果熵池尚未初始化,则会阻塞。如果
GRND_NONBLOCK
设置标志,然后getrandom()
在这些情况下不会阻塞,而是立即引发BlockingIOError
.3.6 新版功能.
- os.GRND_RANDOM¶
如果设置了该位,则从
/dev/random
池而不是/dev/urandom
池。3.6 新版功能.