我需要用Python编写代码来从Amazon S3存储桶中删除所需文件。我能够连接到Amazon S3存储桶,也能保存文件,但是如何删除文件呢?
使用boto3
(目前版本为1.4.4)使用S3.Object.delete()
。
import boto3
s3 = boto3.resource('s3')
s3.Object('your-bucket', 'your-key').delete()
s3.Object('existing-bucket', 'bogus-key').delete()
的操作并查看发生了什么),也可以尝试s3.Object('bogus-bucket', 'bogus-key').delete()
。 - Kohányi Róbertyour-key
是指 S3 上 your-bucket
中实际文件的名称吗? - Underoos使用Python boto3 SDK(假设已经设置了 AWS 凭证),以下代码将删除存储桶中的指定对象:
import boto3
client = boto3.client('s3')
client.delete_object(Bucket='mybucketname', Key='myfile.whatever')
我发现了另一种使用boto的方法:
from boto.s3.connection import S3Connection, Bucket, Key
conn = S3Connection(AWS_ACCESS_KEY, AWS_SECERET_KEY)
b = Bucket(conn, S3_BUCKET_NAME)
k = Key(b)
k.key = 'images/my-images/'+filename
b.delete_key(k)
for x in b.list(): b.delete_key(x.key)
。 - jontsaibucket.list()
这一行。 - Artur SapekBucket
和Key
。例如:from boto.s3.connection import S3Connection, Bucket, Key
。 - Nick Chammas>>> from boto.s3.connection import S3Connection, Bucket, Key Traceback (most recent call last): File "<console>", line 1, in <module> ImportError: No module named boto.s3.connection
,请将答案更新为boto3。 - Harry Moreno欢迎来到2020年,以下是Python/Django的答案:
from django.conf import settings
import boto3
s3 = boto3.client('s3')
s3.delete_object(Bucket=settings.AWS_STORAGE_BUCKET_NAME, Key=f"media/{item.file.name}")
我花了太长时间才找到答案,而答案其实很简单。
请尝试这段代码
import boto3
s3 = boto3.client('s3')
s3.delete_object(Bucket="s3bucketname", Key="s3filepath")
尝试寻找更新的方法,因为Boto3可能会不时更改。我使用了my_bucket.delete_objects():
import boto3
from boto3.session import Session
session = Session(aws_access_key_id='your_key_id',
aws_secret_access_key='your_secret_key')
# s3_client = session.client('s3')
s3_resource = session.resource('s3')
my_bucket = s3_resource.Bucket("your_bucket_name")
response = my_bucket.delete_objects(
Delete={
'Objects': [
{
'Key': "your_file_name_key" # the_name of_your_file
}
]
}
)
key.delete()
:from boto.s3.connection import S3Connection, Bucket, Key
conn = S3Connection(AWS_ACCESS_KEY, AWS_SECERET_KEY)
bucket = Bucket(conn, S3_BUCKET_NAME)
k = Key(bucket = bucket, name=path_to_file)
k.delete()
使用S3FileSystem.rm
函数在s3fs
中。
您可以一次删除单个文件或多个文件:
import s3fs
file_system = s3fs.S3FileSystem()
file_system.rm('s3://my-bucket/foo.txt') # single file
files = ['s3://my-bucket/bar.txt', 's3://my-bucket/baz.txt']
file_system.rm(files) # several files
import boto3, botocore
from botocore.exceptions import ClientError
s3 = boto3.resource("s3",aws_access_key_id='Your-Access-Key',aws_secret_access_key='Your-Secret-Key')
s3.Object('Bucket-Name', 'file-name as key').delete()
如果您希望以最简单的方式使用几行代码从S3存储桶中删除所有文件,请使用以下代码。
import boto3
s3 = boto3.resource('s3', aws_access_key_id='XXX', aws_secret_access_key= 'XXX')
bucket = s3.Bucket('your_bucket_name')
bucket.objects.delete()