Eine Python-Client-App, die Dateien aus S3 herunterlädt und löscht, indem ein Bucket angegeben wird

Überblick

Es war ein Ärger von der Konsole, als ich alle Dateien aus einem bestimmten Bucket abrufen wollte Ich habe ein Tool erstellt, mit dem Dateien in einem Stapel abgerufen werden können, indem ein Bucket angegeben wird. (Vielleicht ist es schon da ...) Ich habe versucht, nicht nur die Erfassungs-, sondern auch die Löschverarbeitung hinzuzufügen. (Wenn damit etwas passiert, tun Sie dies bitte auf eigenes Risiko.)

Bibliothek verwendet

Werkzeugbeschreibung

Die Quelle selbst ist unter [hier] verfügbar (https://github.com/dmikita-sss/pythonGui/tree/master/s3). Wenn Sie das Tool starten, sieht es wie folgt aus

image.png

        if aws_access_key_id =='':
            s3 = boto3.resource('s3')
            s3client=boto3.client('s3')
        else:
            s3 = boto3.resource('s3',
                                                aws_access_key_id=aws_access_key_id,
                                                aws_secret_access_key=aws_secret_access_key_id)
            s3client=boto3.client('s3', 
                                                aws_access_key_id=aws_access_key_id,
                                                aws_secret_access_key=aws_secret_access_key_id)

        bucketName=self.inputFileName.get()
        resultFolder=self.outputFolder.get()
        dataBaseDir=os.path.join(resultFolder,bucketName)

        executeType=EXECUTE_LIST.index(self.combo.get())


        s3bucket=s3.Bucket(bucketName)
        objs = s3bucket.meta.client.list_objects_v2(Bucket=s3bucket.name)

        for o in objs.get('Contents'):
            key = o.get('Key')
            s3Paths=os.path.splitext(key)
            if len(s3Paths[1]) !=0:
                keys=key.split('/')
                filename=keys[len(keys)-1]
                if executeType==0:
                    outputDataDir=key.split(filename)[0]
                    outputDataDir=os.path.join(dataBaseDir,outputDataDir)
                    os.makedirs(outputDataDir,exist_ok=True)
                    outputDataFile=os.path.join(outputDataDir,filename)
                    s3bucket.download_file(key,outputDataFile)
                else:
                    s3client.delete_object(Bucket=s3bucket.name, Key=key)
objs = s3bucket.meta.client.list_objects_v2(Bucket=s3bucket.name)

Da es in dem Teil von erhalten werden kann, wird es von der for-Anweisung verarbeitet. Es ist auch möglich, nur bestimmte Ordner und Dateien anzugeben, indem dem Argument "Präfix" hinzugefügt wird.

Recommended Posts

Eine Python-Client-App, die Dateien aus S3 herunterlädt und löscht, indem ein Bucket angegeben wird
Ein Python-Skript, das auf dem Mac erstellte ._DS_Store- und ._ * -Dateien löscht
Erstellen Sie eine Anwendung, die Formulare mithilfe von Python / Flask anstelle von DB eingibt, anzeigt und löscht.
Eine Bibliothek, die Leben und Tod anderer Maschinen durch Ping von Python aus überwacht
Ein Hinweis, der eine Python-Anwendung von Circle CI auf Elastic Beanstalk bereitstellt und Slack benachrichtigt
Bearbeiten Sie BigQuery-Tabellen von einem Python-Client aus
Studie aus Python Lesen und Schreiben von Hour9-Dateien
Ein netter Nimporter, der Nim und Python verbindet
"Python Kit", das Python-Skripte von Swift aufruft
Lesen Sie mit Python Zeile für Zeile aus der Datei
[Python] Benennen Sie alle Bilddateien in einem bestimmten Ordner nach Aufnahmedatum und -zeit um
[Python] Ein Notizbuch, das die ipynb-Datei von GitHub ins Japanische übersetzt und herunterlädt.
Aus einem Buch, das Programmierer lernen können ... (Python): Zeiger
Kopieren Sie S3-Dateien mit GSUtil von Python nach GCS
Holen Sie sich Dateien von Linux mit paramiko und scp [Python]
[Python] Löschen Sie, indem Sie ein Tag mit Beautiful Soup angeben
[Python] Starten Sie eine Batchdatei aus Python und übergeben Sie Variablen.
Lern-Roadmap, mit der Sie Services mit Python von Grund auf neu entwickeln und veröffentlichen können