import boto3
def delete_s3_versions(bucket_name, prefix):
s3 = boto3.client('s3')
# 获取桶中的所有对象的版本(包括删除标记)
paginator = s3.get_paginator('list_object_versions')
pages = paginator.paginate(Bucket=bucket_name, Prefix=prefix)
delete_objects = {'Objects': []}
for page in pages:
# 处理对象版本
if 'Versions' in page:
for version in page['Versions']:
delete_objects['Objects'].append({
'Key': version['Key'],
'VersionId': version['VersionId']
})
# 处理删除标记
if 'DeleteMarkers' in page:
for marker in page['DeleteMarkers']:
delete_objects['Objects'].append({
'Key': marker['Key'],
'VersionId': marker['VersionId']
})
# 批量删除,最多1000个对象
if len(delete_objects['Objects']) > 0:
print(f"Deleting {len(delete_objects['Objects'])} objects/versions...")
s3.delete_objects(Bucket=bucket_name, Delete=delete_objects)
delete_objects = {'Objects': []}
print(f"Completed deletion of all versions and delete markers in {bucket_name}/{prefix}")
if __name__ == "__main__":
bucket_name = "your-s3-bucket-name" # 替换为你的 S3 桶名称
prefix = "your-directory-prefix/" # 替换为你要清空的目录路径 不带/ 就是删除文件
delete_s3_versions(bucket_name, prefix)```
s3 python脚本批量删除文件夹下全部的文件(删除版本和全部版本)
于 2024-09-06 11:31:40 首次发布