python - 内置 open() 函数中 opener 参数的用途是什么?

标签 python

我正在玩 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/

相关文章:

python - 使用循环返回顺序在列表中搜索字符串

python - 在 Django 中,如何使用列表项的字符串值来获取对象变量的值?

Python无法识别请求 header 中的cookie

python - 在 Flask 应用程序的不同选项卡下加载不同页面

python - 我们如何使用合并操作后找到的数据更新相似列的行中的列数据?

python - 列的 Pandas DataFrame.reset_index

python - dataframe iloc 在 pandas 中出乎意料地工作

Python追加二维数组?

python - Django celery worker 向前端发送实时状态和结果消息

python - Django选择Post请求(返回id,而不是值)