gpt4 book ai didi

python - S3 boto 列表键有时会返回目录键

转载 作者:太空狗 更新时间:2023-10-29 17:24:33 27 4
gpt4 key购买 nike

我注意到 boto 的 api 的返回值因存储桶位置而异。我有以下代码:

con = S3Connection(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = con.get_bucket(S3_BUCKET_NAME)
keys = bucket.list(path)
for key in keys:
print key

我正在运行两个桶,一个在美国西部,一个在爱尔兰。这个桶中的路径是一个子目录,针对 Ireland 我得到子目录和下面的任何 key ,针对 us-west 我只得到下面的 key 。

所以爱尔兰给出:

<Key: <bucketName>,someDir/>
<Key: <bucketName>,someDir/someFile.jpg>
<Key: <bucketName>,someDir/someOtherFile.jpg>

美国标准规定:

<Key: <bucketName>,someDir/someFile.jpg>
<Key: <bucketName>,someDir/someOtherFile.jpg>

显然,无论存储桶位于何处,我都希望能够编写相同的代码。任何人都知道我可以做些什么来解决这个问题,所以我得到了相同的可预测结果。或者即使它是导致问题的 boto 或 S3。我注意到在爱尔兰命名桶有不同的政策,不同的本地人有他们自己的 api 版本吗?

谢谢,

史蒂夫

最佳答案

感谢 Steffen,他建议查看 key 的创建方式。通过进一步调查,我想我已经掌握了这里发生的事情。我最初认为它与水桶区域有关的假设是一条红鲱鱼。这似乎是由于管理控制台在您操作 key 时所做的。

如果您在管理控制台中创建一个目录,它会创建一个 0 字节的 key 。这将在您执行列表时返回。

如果您使用 boto 创建/上传文件,则它不会创建文件夹。有趣的是,如果您从文件夹中(从 AWS 控制台)删除该文件,则会为用于包含该 key 的文件夹创建一个 key 。如果您随后使用 boto 再次上传 bey,那么您的 UI 结构看起来完全相同,但实际上您有一个伪造的目录附加 key 。这就是发生在我身上的事情,因为我正在测试我们的应用程序,我正在清除 key ,然后发现不同的结果。

值得知道这种情况会发生。 UI 中没有指示器显示文件夹是创建的文件夹(将作为键返回的文件夹)还是解释的文件夹(基于键名称)。

关于python - S3 boto 列表键有时会返回目录键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9954521/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com