【发布时间】:2019-12-11 18:28:38
【问题描述】:
由于某种原因,我的回复只给了我空方括号,即 [ ] 并且没有任何反应。
这是我的代码:
session = boto3.Session(aws_access_key_id=awsaccesskey,aws_secret_access_key=awssecretkey,region_name='eu-west-1')
s3 = session.resource('s3')
b = s3.Bucket(s3bucket)
r = b.objects.filter(Prefix=s3path).delete()
return(r)
更新:根据 John 的建议,我尝试创建一个测试存储桶,但不幸的是我收到了权限被拒绝错误。所以我做了以下事情:
- 在我有权访问的存储桶下创建了一个文件夹,名为“test”
- 使用 Prefix='/test/' 执行上述代码
这次我确实收到了一个 ResponseMetadata 对象,而不是空括号。不过我还是很疑惑。我的 HTTPStatusCode 是 200。但是当它告诉我它删除了什么时,它会说:
-
'已删除':[{'Key': '/test/table_name.dat'}, {'Key': '/test/table_name.txt'}]}]
我想我不明白这段代码的预期功能。我期待它删除我在存储桶中创建为根文件夹的空“测试”文件夹。即 bucket/test/ 但它似乎已经在我的整个存储桶中搜索了名为“test”的文件夹并删除了其中的对象??
【问题讨论】:
-
旁注:建议您不要在您的代码中包含访问密钥/秘密密钥。相反,通过运行
aws configure将凭据存储在凭据文件中。 -
你的代码对我来说很好用,我有自己的存储桶和路径。您可能想创建一个测试存储桶,上传一些对象并重试。如果失败,请编辑您的问题以描述您采取的确切步骤,以便我们可以尝试重现您的情况。
-
感谢@JohnRotenstein 测试我的代码并确认它对你有用。我会试试你的建议。