我正在使用Python Boto与S3合作。假设桶的名称是...... bucket。
在桶中,我有一个目录a。在一个,我有许多其他目录一,二,三......在每个目录1,2,3等,我有很多文件。
我正在尝试检查是否存在诸如/ x的目录。我尝试过这样的事情:
key = bucket.get_key('/a/one/')
但没有运气。我的解决方法是返回
list(bucket.list("a/", "/"))
并查看列表中是否存在x,但它看起来很混乱。此外,在返回的列表中,我有'a /'作为键。如果'a /',一个目录,是一个关键,那么不应该'a / one /'也是一个?
这样做的最佳方式是什么?感谢任何帮助。
答案 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]),
否则,您必须在存储桶中维护目录文件。