Abrufen Unterordner Namen im S3-bucket aus boto3

Mit boto3, ich kann auf meine AWS S3 bucket:

s3 = boto3.resource('s3')
bucket = s3.Bucket('my-bucket-name')

Nun, der Eimer enthält Ordner first-level, die sich selbst enthält mehrere sub-Ordner mit einem Zeitstempel benannt, zum Beispiel 1456753904534.
Ich muss wissen, den Namen dieser Unterordner für einen anderen job, den ich mache, und ich Frage mich, ob ich könnte haben boto3 abrufen für mich.

Also habe ich versucht:

objs = bucket.meta.client.list_objects(Bucket='my-bucket-name')

gibt ein Wörterbuch, dessen Schlüssel "Inhalt" gibt mir all die third-level-Dateien anstelle des second-level-Zeitstempel von Verzeichnissen, in der Tat habe ich eine Liste mit Dingen, wie

{u'ETag': '"etag"', u'Key': first-level/1456753904534/Teil-00014', u'LastModified':
datetime.datetime(2016, 2, 29, 13, 52, 24, tzinfo=tzutc()),
u'Owner': {u'DisplayName': 'owner', u 'ID':
'id'},
u'Size': Größe, u'StorageClass': 'storageclass'}

können Sie sehen, dass bestimmte Dateien, in diesem Fall part-00014 abgerufen werden, während ich mag würde, um den Namen des Verzeichnisses allein.
Im Prinzip könnte ich die Streifen aus dem directory-Namen aus allen Pfaden, aber es ist hässlich und teuer, zum abrufen von alles, was Sie an der Dritten Ebene auf die zweite Ebene!

Ich habe auch versucht etwas berichtet hier:

for o in bucket.objects.filter(Delimiter='/'):
    print(o.key)

aber ich komme nicht auf den Ordner auf dem gewünschten Niveau.

Gibt es eine Möglichkeit, dies zu lösen?

Also du sagst, dass dieser nicht funktioniert? Könnten Sie nach, was passiert, wenn Sie laufen?
Ich habe versucht, die ersten Zeilen, der link, den Sie schicken, die ich hier eingefügt, und ich bekomme den text-Dateien auf der ersten Ebene der Eimer und keine Ordner.
zinn Hast du jemals dieses Problem zu beheben. Ich stehe vor einem ähnlichen dilemma, wo ich das erste element in jeden Eimer Unterordner.
Ja, kein anderer Weg, als sich alle Objekte und die Aufteilung von / zu bekommen Unterordner
mar tin Die einzige Möglichkeit, die ich gemacht habe, ist genommen die Ausgabe, geworfen in ein text-format und Komma begrenzen, die durch " /" und dann kopieren und einfügen erstes element. Was für ein Schmerz in den Arsch.

InformationsquelleAutor mar tin | 2016-03-04

Schreibe einen Kommentar