Ich möchte löschen können, indem ich einfach die Datei mit dem Schlüsselnamen des zu löschenden Objekts lese und mit einem Klick ausführe.
Referenzlink ・ Informationen zum Löschen von S3
Schlüsselliste der zu löschenden Objekte
hoge/fuga/hoge.jpg
hoge/fuga/hoge.png
hoge/hoge/hoge.gif
hoge/hoge/fuga.png
・ ・ ・
fuga/fuga/fuga.png
Programm entfernen.py
import boto3
import re
import json
MY_REGION = 'Regionsname';
MY_BUCKET = 'Eimername';
client = boto3.client('s3', region_name=MY_REGION)
request_list = []
img_path_list = ''
def split_list(l):
for idx in range(0, len(l), 1000):
yield l[idx:idx + 1000]
#Gelöschte Daten lesen
with open('Schlüsselliste der zu löschenden Objekte.text') as f:
img_path_list = f.readlines()
#Entfernen Sie den Zeilenumbruch am Ende der Daten und fügen Sie ihn der Liste hinzu
for path in img_path_list:
path = path.replace('\n','')
request_list.append({'Key': path})
#Teilen Sie die Liste in 1000 Elemente
# devide_list = [[0,...,999],[1000,...,1999],...,[n,...,n+999]]
devide_list = list(split_list(request_list))
#Führen Sie die DELETE-API aus
for key_list in devide_list:
response = client.delete_objects(
Bucket = MY_BUCKET,
Delete = {
'Objects': key_list
}
)
#Notieren Sie das Löschergebnis
with open('log/Löschergebnis.txt', mode='a') as f:
for res in response['Deleted']:
f.write(json.dumps(res))
f.write('\n')
-Wenn das Löschen erfolgreich ist, sieht das Ergebnis wie folgt aus.
Löschergebnis.text
{"Key": "hoge/fuga/hoge.jpg ", "DeleteMarker": true, "DeleteMarkerVersionId": "hogehoge1"}
{"Key": "hoge/fuga/hoge.png ", "DeleteMarker": true, "DeleteMarkerVersionId": "hogehoge2"}
{"Key": "hoge/hoge/hoge.gif", "DeleteMarker": true, "DeleteMarkerVersionId": "hogehoge3"}
{"Key": "hoge/hoge/fuga.png ", "DeleteMarker": true, "DeleteMarkerVersionId": "hogehoge4"}
{"Key": "fuga/fuga/fuga.png ", "DeleteMarker": true, "DeleteMarkerVersionId": "hogehoge5"}
Bereiten Sie eine Liste zum Löschen und eine Liste zum Nichtlöschen vor und prüfen Sie, ob in beiden Listen ein Schlüssel vorhanden ist.
Zeigen Sie die in den beiden Listen enthaltenen Elemente an.py
input_urls = ''
not_delete_urls = ''
#Listendaten lesen
with open('Eingabeliste.txt') as f:
input_urls = f.readlines();
with open('Liste nicht löschen.txt') as f:
not_delete_urls = f.readlines();
duplicate_urls = set(input_urls) & set(not_delete_urls)
#Wechseln Sie vom Set-Typ zum Listentyp
list_duplicate_urls = list(duplicate_urls)
list_duplicate_urls.sort()
#Zeigen Sie die Anzahl der gemeinsamen Elemente und Elemente an
print(len(list_duplicate_urls))
for elem in list_duplicate_urls:
print(elem, end='')
Recommended Posts