Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus

Ich habe angefangen, S3 bei der Arbeit zu benutzen.

Der S3-Schlüssel wird in der Datenbank gespeichert und ist normalerweise in Ordnung, aber es ist problematisch, wenn er irgendwohin verschoben wird.

Also habe ich boto verwendet, um eine Liste der S3-Schlüssel zu erhalten.

Ich denke, es ist effizient, weil es scheint, dass nur HEAD geworfen wird.

#! /usr/bin/env python
# -*- coding: utf-8 -*-
"""
Geben Sie die Liste der im Ziel-Bucket enthaltenen Dateien an TSV aus.
"""
import sys
import os
import csv
from ConfigParser import SafeConfigParser
from getpass import getpass

from boto import connect_s3


AWS_CLI_CONFIG_PATH = os.path.expanduser('~/.aws/config')


def get_aws_config(config_path=AWS_CLI_CONFIG_PATH):
    """
Gibt den folgenden Schlüssel von aws cli config zurück
    - aws_access_key_id
    - aws_secret_access_key'
    """
    keys = ['aws_access_key_id', 'aws_secret_access_key']
    cfg = SafeConfigParser()
    with open(config_path, 'r') as fp:
        cfg.readfp(fp)
    return tuple(cfg.get('default', x) for x in keys)


def get_bucket(aws_access_key_id, aws_secret_access_key, bucket_name):
    """
Gibt den Boto S3-Bucket zurück
    """
    if not aws_access_key_id and not aws_secret_access_key:
        aws_access_key_id, aws_secret_access_key = get_aws_config()
    return connect_s3(aws_access_key_id, aws_secret_access_key).get_bucket(bucket_name)


def write_tsv(aws_access_key_id, aws_secret_access_key, bucket_name, file_name):
    """
S3 Bucket Key.Namenslistendatei_Export zum Namen als TSV.
    """
    #Bestimmen des absoluten Dateipfads
    file_path = os.path.abspath(file_name)

    def _writerows(rows):
        with open(file_path, 'a') as fp:
            writer = csv.writer(fp, dialect='excel-tab')
            writer.writerows(rows)

    #Header exportieren
    _writerows([('key_name', )])

    #Körper exportieren
    rows = []
    for key in get_bucket(aws_access_key_id, aws_secret_access_key, bucket_name).list():
        rows.append(key.name)
        if len(rows) > 1000:
            _writerows(rows)
            rows = []
    else:
        _writerows(rows)


if __name__ == '__main__':
    if len(sys.argv) != 2:
        print('Please specify output filename.')

    else:
        print('Please input the aws_access_key_id/aws_secret_access_key and a target bucket name.')
        print('If you don\'t input the aws_access_key_id/aws_secret_access_key, then we use awscli config.')
        aws_access_key_id = getpass('aws_access_key_id: ')
        aws_secret_access_key = getpass('aws_secret_access_key: ')
        bucket_name = raw_input('target bucket name: ')

        if not aws_access_key_id and not aws_secret_access_key and not os.path.isfile(AWS_CLI_CONFIG_PATH):
            print('Please specify the aws_access_key_id/aws_secret_access_key or create awscli config.')
            sys.exit(1)

        write_tsv(
            aws_access_key_id,
            aws_secret_access_key,
            bucket_name,
            sys.argv[1])
        print('Output: {}'.format(sys.argv[1]))

** Sutema ** Die Firma, zu der ich gehöre, scheint [Rekrutierung von Mitarbeitern] zu sein (http://jobs.beproud.jp/). Wenn Sie der Meinung sind, dass Sie versuchen sollten, Python zu schreiben, bewerben Sie sich bitte.

Recommended Posts

Geben Sie die in S3 Bucket enthaltene Schlüsselliste in eine Datei aus
Ändern Sie das Standardausgabeziel in eine Datei in Python
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
[Python] So geben Sie Listenwerte der Reihe nach aus
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
Schreiben Sie die Standardausgabe in eine Datei
Ruft den Wert eines bestimmten Schlüssels bis zum angegebenen Index der Wörterbuchliste in Python ab
So überprüfen Sie, ob sich der angegebene Schlüssel im angegebenen Bucket in Boto 3 befindet
So geben Sie das Ausgabeergebnis des Linux-Befehls man in eine Datei aus
Ändern Sie die Liste in der for-Anweisung
So geben Sie eine .ui-Datei in der Dialog- / Widget-GUI in PySide an
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
So löschen Sie einen Taple in einer Liste (Python)
So erstellen Sie eine JSON-Datei in Python
Kopieren Sie die Liste in Python
Holen Sie sich nur Unterklassenelemente in eine Liste
Speichern Sie das Objekt in einer Datei mit pickle
Ausgabe in Form eines Python-Arrays
Python Amateur versucht die Liste zusammenzufassen ②
So lesen Sie Dateien in verschiedenen Verzeichnissen
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
So geben Sie mit Jupyter Notebook einen Wert in der Mitte einer Zelle aus
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Verwenden Sie libsixel, um Sixel in Python auszugeben und das Matplotlib-Diagramm an das Terminal auszugeben.
[Python] Kombinieren von Listen mit Zahlen zu Zeichenfolgen und Schreiben in eine Ausgabedatei
Das Ausgabe-Timing ist falsch, wenn die Standardausgabe (Fehlerausgabe) in eine Datei in Python konvertiert wird
Ich möchte eine Liste der WebDAV-Dateien im Modul Anfragen anzeigen
Vergessen Sie nicht, die Datei zu schließen, nur weil sie sich in einem temporären Ordner befindet
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Verwenden Sie tkinter, um den Ausgabecode in Python als "A und vorgeben, B zu sein" zu verschieben
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
So zeigen Sie das Änderungsdatum einer Datei in C-Sprache bis zu Nanosekunden an
Abrufen des Dateinamens in einem Ordner mithilfe von glob
Wie identifiziere ich das Element mit der geringsten Anzahl von Zeichen in einer Python-Liste?
So listen Sie Dateien im angegebenen Verzeichnis auf (Suche nach mehreren Bedingungen / Unterverzeichnissen)
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Ich möchte eine Datei mit Python zufällig testen
Beachten Sie beim Initialisieren einer Liste in Python
So überprüfen Sie in Python, ob sich eines der Elemente einer Liste in einer anderen Liste befindet
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
[Mac] Eine supereinfache Möglichkeit, Systembefehle in Python auszuführen und die Ergebnisse auszugeben
Geben Sie das Ausgabeergebnis von sklearn.metrics.classification_report als CSV-Datei aus
So finden Sie das erste Element, das den Kriterien in der Python-Liste entspricht
Hello World! Ausgabeliste in verschiedenen Sprachen (zeitnahe Aktualisierung geplant)
Rufen Sie die Excel-Liste rekursiv in einem bestimmten Ordner mit Python ab und schreiben Sie sie in Excel.
Analysieren Sie die Researchmap-API mit Python und erstellen Sie automatisch eine Word-Datei für die Leistungsliste
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
Übergeben des Ausführungsergebnisses eines Shell-Befehls in einer Liste in Python (nicht blockierende Version)
Definieren Sie eine Aufgabe zum Festlegen der Fabric-Umgebung in YAML
Dem Schlüssel F12 wurde ein Gerüstmakro in einer Python-Skriptdatei zugewiesen
[Sublime Text 2] Führen Sie immer eine bestimmte Datei im Projekt aus
Speichern Sie das Pystan-Modell und erhalten Sie eine Pickle-Datei
[Python] So überprüfen Sie, ob der Schlüssel im Wörterbuch vorhanden ist