Python os.get_handle_inheritable 方法
在 Python 中,OS 模块提供了几种与操作系统工作和通信的方法。 os import包含并继承了很多方法,帮助我们对操作系统进行不同的操作。
其中一个方法是 os.get_handle_inheritable()
,它获取指定句柄的可继承标志。 官方 Python 站点说此方法仅适用于 Windows。
Python 有用于描述符的 os.get_inheritable()
方法和用于句柄的 os.get_handle_inheritable()
方法。 该方法用于因子中的套接字句柄。
现在的问题是,什么是文件和目录描述符?
Python 中的文件和目录描述符
为了直接与操作系统内核通信,我们有低级文件描述符。 这些文件描述符是一个整数的形式,它在每个进程的内核存储的所有打开文件的表中找到打开的文件。
几个系统调用可以接受具有以下特征的文件描述符(建议与之交互):
- 手动错误处理
- 在少数情况下重试几次
- 需要固定大小的缓冲区
为了方便地与文件交互并减少错误,我们需要 Python 类,它们是包装文件描述符的文件对象。
如果您看到引用目录的文件描述符,则 dir_fd 不是 None,并且操作路径是相对于该目录的。 仅当路径是绝对路径时才会忽略 dir_fd。
我们还可以在我们的平台上使用命令 os.supports_dir_fd 检查 dir_fd 的可用性和支持。 如果 dir_fd 不可用,平台将显示并引发错误 NotImplementedError。
符号链接
如果要处理的路径的最后一项是符号链接并且 follow_symlinks 为 False,则符号链接将对方法进行操作。
类似于特定平台的文件和目录描述符可用性,我们也可以使用命令 os.supports_follow_symlinks 检查我们平台上的 follow_symlinks 支持方法。
如果符号链接不可用,将引发异常 NotImplementedError
。
执行
在实现过程中,如果我们想检查提供的路径是否可以作为您操作系统上特定方法的文件描述符,我们可以使用 os.supports_fd。
如果您的操作系统不可用,将通过显示 NotImplementedError 异常来引发异常。
Python 语法 os.get_handle_inheritable() 方法
os.get_handle_inheritable(handle)
参数
-
handle - 这些是具有包含 0、1 或 2 的整数数据类型的文件句柄。这是
get_handle_inheritable()
方法的单个参数。
返回值
这个方法不返回任何东西; 取而代之的是,它获得了可继承标志,一个布尔值 True 或 False。
示例 1:在 Python 中使用 os.get_handle_inheritable() 方法
# this is how you can use the os.get_handle_inheritable() method
def get_inheritable(self):
return os.get_handle_inheritable(self.fileno())
os.get_handle_inheritable()
方法获取文件描述符的继承标志。 此标志显示并突出显示描述符是否可以由其子进程继承。
在 Python 3.4 版本(默认情况下)中,Python 创建的文件描述符是非继承的。
Windows:
在子进程中,文件句柄和非继承句柄都是关闭的,只有始终继承的原始流(文件句柄 0、1 和 2,即 stdin、stdout 和 stderr)除外。
Unix:
当一个新的程序被执行时,非继承的文件描述符在子进程中被关闭。 相比之下,其他(文件描述符)是继承的。
示例 2:探索 os 模块中的 os.get_handle_inheritable() 方法
正如我们所讨论的,如果您忘记或想探索 os 模块中的所有方法,os 模块提供了不同的方法供您使用。
您始终可以在 print 语句中使用 dir()
方法来输出所有这些方法。 请参阅下面的源代码以找到不同的方法和 os.get_handle_inheritable()
方法。
# importing the os module for using inside methods
import os
# use the dir() method to explore other methods
print(dir(os))
输出:
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_check_methods', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
Django 返回 JSON
发布时间:2023/05/04 浏览次数:106 分类:Python
-
在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。
在 Django 中创建对象
发布时间:2023/05/04 浏览次数:59 分类:Python
-
本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。
在 Django 中为多项选择创建字段
发布时间:2023/05/04 浏览次数:75 分类:Python
-
在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。