模块b的list()方法中的问题

2024-04-26 10:19:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的列表方法如下:

all_keys = self.s3_bucket.list(self.s3_path)

bucket“s3\u path”包含文件和文件夹。上面一行的返回值很混乱。它正在返回:

  1. 父目录
  2. 一些目录不是全部
  3. 文件夹和子文件夹中的所有文件。你知道吗

我以为它只会返回文件。你知道吗


Tags: 文件path方法self目录文件夹列表s3
2条回答

如果bucket中有很多项,那么list_objects的结果将被分页。默认情况下,它最多返回1000个项目。查看Boto docs了解如何使用Marker对所有项进行分页。你知道吗

哦,看起来你在第二排。对你来说,就是BucketListResultSet。你知道吗

实际上,amazons3中没有文件夹。只是为了方便。对象可以存储在给定的路径中,即使具有该路径的文件夹不存在。对象的键是完整路径加上文件名。你知道吗

例如,即使文件夹不存在,也会复制文件:

aws s3 cp file.txt s3://my-bucket/foo/bar/file.txt

这不会创建/foo/bar文件夹。它只创建一个键为:/foo/bar/file.txt的对象

但是,如果在S3管理控制台中创建文件夹,则会创建一个长度为零的文件,其中包含文件夹的名称,以便该文件出现在控制台中。当列出文件时,这个将显示为目录名,但实际上是零长度文件的名称。你知道吗

这就是为什么某些目录可能会出现,而其他目录则不会出现,这取决于它们是专门创建的,还是只是简单地存储在该路径中。你知道吗

底线:amazons3是一个对象存储系统。它实际上只是一个大的键/值存储,键是对象的名称,值是对象的内容。不要假设它的工作原理与传统的文件系统相同。你知道吗

相关问题 更多 >