首页 > 解决方案 > 在 pyfilesystem 的 s3 文件系统中打开文件失败

问题描述

我试图简单地在 pyfilesystem 的 s3 文件系统中打开一个文件,如下所示:

>>> s3fs.listdir('dfparks/test')
['test.txt']
>>> s3fs.open('dfparks/test/test.txt')

我得到错误:

fs.errors.ResourceNotFound: resource 'dfparks/test/test.txt' not found

我已经尝试了所有我能想到的 path / s3 url 变体,但我总是得到 not found 错误。

标签: pyfilesystem

解决方案


fs.s3fs 默认在严格模式下工作,检查是否存在目录标记(以“/”结尾的键)。您可以通过将 strict=False 传递给 S3FS 构造函数或将“strict=0”附加到传递给 fs.open_fs 的 url 来关闭严格模式

但是,不幸的是,即使在 strict=False 模式下,S3FS 仍然在少数地方进行这些检查。我的 PR 正在等待审查修复:https ://github.com/PyFilesystem/s3fs/pull/60 。同时,您可以使用 fs-s3fs-ng 软件包安装固定版本:

pip install fs-s3fs-ng

此外,它默认启用非严格模式并打开 S3 流式传输(其他 PR 等待接受)

请让我知道这是否适合您。


推荐阅读