2017-07-11 4 views
0

Ich versuche, die Dateien unter Unterverzeichnis in S3 zur Liste, aber ich bin nicht in der Lage, die Dateien Namen zur Liste:Wie die Dateien im S3-Unterverzeichnis zur Liste mit Python

import boto 
from boto.s3.connection import S3Connection 
access='' 
secret='' 
conn=S3Connection(access,secret) 
bucket1=conn.get_bucket('bucket-name') 
prefix='sub -directory -path' 
print bucket1.list(prefix) 
files_list=bucket1.list(prefix,delimiter='/') 
print files_list 
for files in files_list: 
    print files.name 

Können Sie sich bitte helfen ich um dieses Problem zu lösen.

Antwort

0

Ihr Code kann durch Hinzufügen einer / am Ende des Präfix behoben werden.

Das moderne Äquivalent boto3 Verwendung wäre:

import boto3 
s3 = boto3.resource('s3') 

## Bucket to use 
bucket = s3.Bucket('my-bucket') 

## List objects within a given prefix 
for obj in bucket.objects.filter(Delimiter='/', Prefix='fruit/'): 
    print obj.key 

Ausgang:

fruit/apple.txt 
fruit/banana.txt 

Anstatt die S3-Client verwendet, dieser Code verwendet das Objekt S3 von boto3 vorgesehen, die einige Code einfacher macht .