python - S3 使用 boto3 删除文件夹内的文件
问题描述
我们如何使用 boto3 删除 S3 文件夹中的文件?
PS - 只应删除文件,应保留文件夹。
解决方案
您将不得不使用delete_object()
:
import boto3
s3_client = boto3.client('s3')
response = s3_client.delete_object(
Bucket='my-bucket',
Key='invoices/January.pdf'
)
如果您询问如何删除文件夹中的所有文件,那么您需要遍历具有给定前缀的所有对象:
import boto3
s3_client = boto3.client('s3')
BUCKET = 'my-bucket'
PREFIX = 'folder1/'
response = s3_client.list_objects_v2(Bucket=BUCKET, Prefix=PREFIX)
for object in response['Contents']:
print('Deleting', object['Key'])
s3_client.delete_object(Bucket=BUCKET, Key=object['Key'])
另外,请注意,文件夹实际上并不存在于 Amazon S3中。对象的键(文件名)包含对象的完整路径。如有必要,您可以使用文件夹名称创建一个长度为零的文件,以使文件夹“出现”,但这不是必需的。仅在给定路径中创建文件夹将使任何子文件夹有点“出现”,但在删除对象时它们将“消失”(因为文件夹实际上并不存在)。
推荐阅读
- java - 请帮我配置自定义 LocalSessionFactoryBean
- javascript - Three.js 中的对象选择检查
- java - ImageIO ZLIB 输入流的意外结束
- python-3.x - 无法使用python和oracle数据库将数据插入表中
- javascript - ReactJS 不显示 backgroundImage 内联 CSS
- java - 在 plugin.xml 文件中指定 eclipse 版本
- python - 如何从文本中提取所需信息?Python
- jquery - 选择单击项目的子项(同一页面上的多个副本)
- swift - 添加语言后无法为 XCTest 加载底层模块
- vb.net - VB .Net PrintDialog 返回错误的打印机名称