2015-11-02 25 views
0

我在讀this tutorial,但我無法找到一種方法來列出容器下的所有(虛擬)文件夾而無需獲取所有文件。我有500個(虛擬)文件夾中的26K文件。我只想獲取文件夾列表,而不必等待幾分鐘,以獲取包含整個文件列表的list_blobs的輸出。有沒有辦法做到這一點?或者至少告訴list_blobs不要比容器下面的n更深?通過python API在azure blob存儲中列出虛擬文件夾

回答

0

@拉夫Mantri指出了正確的方式來獲得BlobPrefix元素的列表,我們可以利用它來創建一個函數來要求你的要求:

例如我有4個級別的目錄:

import azure 
from azure.storage.blob import BlobService 
blob_service = BlobService(account_name='<account_name>', account_key='<account_key>') 
def getfolders(depth=1): 
    result = [] 
    searched = [] 
    delimiter = '/' 
    print depth 
    blob_list = blob_service.list_blobs('container-name',delimiter='/') 
    result.extend(str(l.name) for l in blob_list.prefixes) 
    #for l in blob_list.prefixes: 
    # result.extend(str(l.name)) 
    depth -= 1 
    while (depth>0): 
     print 'result: \n' 
     print ','.join(str(p) for p in result) 
     print 'searched: \n' 
     print ','.join(p for p in searched) 
     for p in [item for item in result if item not in searched]: 
      print p +' in '+ str(depth) 
      searched.append(p) 
      blob_list = blob_service.list_blobs('vsdeploy',prefix=p,delimiter='/') 
      result.extend(str(l.name) for l in blob_list.prefixes) 
     depth -= 1 
    return result 

blob_list = getfolders(4) 
print ','.join(str(p) for p in blob_list)