2

我有一个Jupiter-notebook在 AWS 上运行的 python 应用程序。我将 a 加载C-library到我的 python 代码中,该代码需要一个文件的路径。我想从 S3 存储桶访问这个文件。

我尝试使用 s3fs:

s3 = s3fs.S3FileSystem(anon=False)

usings3.ls('..')列出了我所有的存储桶文件...到目前为止还可以。但是,我正在使用的库实际上应该在我无法访问的地方使用 s3 变量。我只能将路径传递给 c 库。

有没有办法以某种方式挂载 s3 存储桶,我不必调用 s3.open(),并且可以调用open(/path/to/s3)隐藏在某个地方的 s3 存储桶真的作为本地文件系统挂载?

我认为它应该在不使用 s3 的情况下像这样工作。因为我无法更改我在内部使用的库来使用 s3 变量...

with s3.open("path/to/s3/file",'w') as f:
      df.to_csv(f)

with open("path/to/s3/file",'w') as f:
      df.to_csv(f)

还是我做错了?

iam 使用的 c 库在 python 中作为 DLL 加载,我调用一个函数:

lib.OpenFile(path/to/s3/file)

我必须将路径传递s3到库 OpenFile 函数中。

4

2 回答 2

7

如果您希望将 S3 存储桶挂载为文件系统的一部分,请使用 s3fs-fuse

https://github.com/s3fs-fuse/s3fs-fuse

这将使它成为文件系统的一部分,并且常规文件系统功能将按您的预期工作。

于 2019-11-05T17:56:45.557 回答
1

如果您以windows为目标,则可以使用rclonewinfsp将 S3 存储桶挂载为本地文件系统

简化的步骤是:
rclone config创建一个远程
rclone mount remote:bucket *挂载

https://github.com/rclone/rclone
https://rclone.org/

https://github.com/billziss-gh/winfsp
http://www.secfs.net/winfsp/

可能与这个问题不完全相关,但我确信这将是许多来到这里的用户。

于 2021-06-17T16:24:43.097 回答