2016-08-29 4 views
1

버킷의 하위 폴더에있는 파일 목록을 가져 오려고합니다. 모든 것은 잘 작동합니다. 예외적으로, 파일을 구문 분석하려고 할 때 내 코드가 가져 오는 첫 번째 키는 하위 폴더 이름입니다. 하위 폴더 이름을 키로 남겨 둘 수있는 방법이 있습니까?Boto3 S3 버킷의 내용을 가져옵니다.

sub1/ 
sub1/file1 
sub1/file2 
. 
. 
+0

중요 사항 :이 값은 항상 존재한다고 가정하지 마십시오. 콘솔 또는 s3fs와 같은 특정 타사 도구를 사용하여 폴더를 명시 적으로 만드는 아티팩트입니다. API에서'my/example/object.txt' 파일을 생성하면 "my"또는 "example"폴더를 직접 생성하지 않고 폴더는 콘솔에 계속 나타나지만'my /'와'my/example /'List Objects API에서는 반환하지 않습니다. –

답변

2

내가 거기에 장고처럼 컬렉션에 .exclude하지만 난이 옵션으로 볼 수없는 상상하는 것 키 인쇄에서

s3 = session.resource('s3') 
bucket = s3.Bucket('bucket_name') 

for obj in bucket.objects.filter(Prefix="sub1"): 
    key = obj.key 
    print(key) 

결과. 이 같은 것을 시도 할 수 있습니다.

s3 = session.resource('s3') 
bucket = s3.Bucket('bucket_name') 
prefix = "sub1/" 
data = [obj for obj in list(bucket.objects.filter(Prefix=prefix)) if obj.key != prefix] 

for obj in data: 
    print(obj.key) 
+0

위대한 작품. 고맙습니다. – maltman

관련 문제