在python中支持POSIX openat函数

时间:2018-08-15 02:49:45

标签: python python-3.x posix

有一个patch可以将对POSIX openat函数(以及其他*at函数,例如fstatat)的支持添加到标记为{{ 1}}的分辨率为closed,但是fixedosposix模块目前不包含任何这些方法。

这些方法是无竞争条件下有效解决platform中的this之类的问题和其他语言的标准方法。

这些是否包含在当前某个地方的标准库中?如果没有,将来是否有计划将其包括在内。

1 个答案:

答案 0 :(得分:3)

是的,这可以通过将the dir_fd argument传递给标准os模块中的各种功能来支持。例如参见os.open()

  

打开文件路径并设置各种标志[...]

     

此函数可以使用dir_fd参数支持相对于目录描述符的路径。

如果您想使用高级文件对象,例如内置 open()函数返回的对象,则该函数的文档提供了示例代码,展示了如何使用{{1 }}参数。请注意,openeropen()是完全不同的功能,不应混淆。或者,您可以使用os.open()打开文件,然后将文件描述符号传递给os.fdopen()os.open()

还应该指出,这目前仅在Unix上有效;检查open()支持的可移植且面向未来的方法是编写如下代码:

dir_fd

另一方面,我不确定Windows是否甚至允许首先打开目录。您当然不能使用_open()/_wopen()来做到这一点,据记载,如果“给定路径是目录”,则失败。为了安全起见,建议您仅在检查if os.open in os.supports_dir_fd: # Use dir_fd. else: # Don't. 支持后才尝试打开目录。