python 如何将S3存储桶装载为本地文件系统?

pobjuy32  于 2023-03-16  发布在  Python
关注(0)|答案(3)|浏览(210)

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

s3 = s3fs.S3FileSystem(anon=False)

使用s3.ls('..')列出了我所有的bucket文件...到目前为止还可以。但是,我正在使用的库实际上应该在我没有访问权限的地方使用s3变量。我只能传递到c库的路径。
有没有一种方法可以挂载s3 bucket,在这种方法中,我不必调用s3.open(),而可以只调用open(/path/to/s3),如果s3 bucket隐藏在某个地方,它实际上是作为本地文件系统挂载的?
我认为它应该像这样工作,而不使用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函数。

sczxawaw

sczxawaw1#

如果目标是windows,则可以将rclonewinfsp一起使用,以将S3存储桶装载为本地FileSystem
简化步骤如下:
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/

  • 可能不完全相关的这个问题,但我敢肯定,这将是很多用户来到这里。*
z18hc3ub

z18hc3ub2#

多年后aws为linux here的s3引入了挂载点文件客户端

w9apscun

w9apscun3#

如果您希望将S3存储桶作为文件系统的一部分挂载,则使用s3 fs-fuse
https://github.com/s3fs-fuse/s3fs-fuse
这将使它成为文件系统的一部分,常规的文件系统功能将如您所期望的那样工作。

相关问题