我正在玩 python 3.5 中的 open 函数。我不明白 opener 参数(最后一个参数)在 open 函数中的用法。根据 python 文档:可以通过将可调用对象作为打开器传递来使用自定义打开器。
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
有人可以通过示例向我解释为什么我需要开场白吗?
最佳答案
参见文档 here .他们给出的例子如下:
import os
dir_fd = os.open('somedir', os.O_RDONLY)
def opener(path, flags):
return os.open(path, flags, dir_fd=dir_fd)
with open('spamspam.txt', 'w', opener=opener) as f:
print('This will be written to somedir/spamspam.txt', file=f)
os.close(dir_fd) # don't leak a file descriptor
这个特定示例所做的是创建一个开启器,它始终采用路径并将它们解释为相对于您选择的给定目录 (somedir
)。您可以想象使用更复杂的逻辑来根据文件类型查找特定目录,或者根据文件名的前几个字符将大量文件分成一个目录结构,并编写一个特定的函数作为您的打开器来定位它们。所有这些都会将文件定位逻辑封装到一个函数中作为您的开启者。
关于python - 内置 open() 函数中 opener 参数的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37241711/