2017-03-02 2 views
0

나는 다음과 같은 최고 수준의 내용으로 AWS S3 버킷이 모든 루트 폴더 얻는 방법 :S3 버킷

folder_1/ 
folder_2/ 
folder_3/ 
random_file.txt 

모든 폴더가 그 안에서 많은 파일과 폴더가 있습니다.

버킷의 최상위/루트에있는 폴더의 이름 만 검색하는 boto3 스크립트를 작성하려면 어떻게해야합니까?

나는 다음과 같은 접근 방식 사용하고

:

bucket = s3.Bucket('mybucket') 
root_folders = [] 
for key in bucket.objects.filter(Delimiter='/'): 
    root_folders.append(key.key) 

결과는 (물론) 단지 random_file.txt

임 찾고 그 결과는 다음과 같습니다

['folder_1', 'folder_2', 'folder_3'] 
+0

[folder_1, folder_2, folder_3, random_file.txt] 또는 [folder_1, folder_2, folder_3] 만 읽으시겠습니까? – Whud

+0

폴더 만! – Vingtoft

답변

2

list_objects_v2를 사용하여, 다음과 같이 CommonPrefixes 필드의 폴더를 검색 할 수 있습니다.

>>> s3.list_objects_v2(Bucket='mybucket', Delimiter='/') 
{ ..., 
    u'CommonPrefixes': [ 
    {u'Prefix': 'folder_1/'}, 
    {u'Prefix': 'folder_2/'}, 
    {u'Prefix': 'folder_3/'} 
    ] 
}