S3 - 获取目录的密钥

时间:2015-01-04 11:55:12

标签: python amazon-web-services amazon-s3 boto

我正在使用Python Boto与S3合作。假设桶的名称是...... bucket。

在桶中,我有一个目录a。在一个,我有许多其他目录一,二,三......在每个目录1,2,3等,我有很多文件。

我正在尝试检查是否存在诸如/ x的目录。我尝试过这样的事情:

key = bucket.get_key('/a/one/')

但没有运气。我的解决方法是返回

list(bucket.list("a/", "/")) 

并查看列表中是否存在x,但它看起来很混乱。此外,在返回的列表中,我有'a /'作为键。如果'a /',一个目录,是一个关键,那么不应该'a / one /'也是一个?

这样做的最佳方式是什么?感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

S3没有目录的概念。如果存在与目录相同的路径的密钥,则目录通常被视为“现有”,但桶中单个密钥的示例完全有效:

'/path/to/file/with/no/dir/file.txt'

请注意,没有关键字项:

'/path/'
'/path/to/'

虽然可能存在,但必须进行管理。

您可以做的是查看是否有任何键位于您正在检查的目录中,例如:

dir_exists = any([k.startswith(path) for k in s3_file_names]),

否则,您必须在存储桶中维护目录文件。