簡體   English   中英

使用Dropbox API下載指定文件夾中的所有圖像,而不下載子文件夾中的所有圖像

[英]Download all images in a specified folder and not the sub folders using dropbox API

我想編寫代碼,使用Dropbox API可以下載指定文件夾中的所有圖像,而不是Dropbox中的子文件夾。 到目前為止,我已經寫了這個

 def download_cont(self, folderName):

    fname = folderName
    folder_metadata = self.client.metadata('/' + fname)
    print folder_metadata

這是元數據:

    {u'size': u'0 bytes', u'hash': u'3fad7ce5537e0941f8768413cdb7b84d', u'bytes': 0, u'thumb_exists': False, u'rev': u'111c24338d', u'modified': u'Sun, 22 Dec 2013 02:09:41 +0000', u'path': u'/images', u'is_dir': True, u'icon': u'folder', u'root': u'dropbox', u'contents': [{u'size': u'56.2 KB', u'rev': u'131c24338d', u'thumb_exists': True, u'bytes': 57538, u'modified': u'Sun, 22 Dec 2013 02:16:34 +0000', u'mime_type': u'image/png', u'path': u'/images/296px-Manchester_United_FC_crest.svg.png', u'is_dir': False, u'icon': u'page_white_picture', u'root': u'dropbox', u'client_mtime': u'Sun, 22 Dec 2013 02:16:34 +0000', u'revision': 19}, {u'size': u'9.8 KB', u'rev': u'141c24338d', u'thumb_exists': True, u'bytes': 9999, u'modified': u'Sun, 22 Dec 2013 02:16:36 +0000', u'mime_type': u'image/jpeg', u'path': u'/images/images.jpg', u'is_dir': False, u'icon': u'page_white_picture', u'root': u'dropbox', u'client_mtime': u'Sun, 22 Dec 2013 02:16:36 +0000', u'revision': 20}, {u'size': u'77 KB', u'rev': u'151c24338d', u'thumb_exists': True, u'bytes': 78798, u'modified': u'Sun, 22 Dec 2013 02:16:39 +0000', u'mime_type': u'image/jpeg', u'path': u'/images/manchester-united-fc-3d.jpg', u'is_dir': False, u'icon': u'page_white_picture', u'root': u'dropbox', u'client_mtime': u'Sun, 22 Dec 2013 02:16:39 +0000', u'revision': 21}, {u'size': u'220.9 KB', u'rev': u'121c24338d', u'thumb_exists': True, u'bytes': 226209, u'modified': u'Sun, 22 Dec 2013 02:15:51 +0000', u'mime_type': u'image/jpeg', u'path': u'/images/manchester-united-plc-logo.jpg', u'is_dir': False, u'icon': u'page_white_picture', u'root': u'dropbox', u'client_mtime': u'Sun, 22 Dec 2013 02:15:51 +0000', u'revision': 18}, {u'size': u'0 bytes', u'rev': u'161c24338d', u'thumb_exists': False, u'bytes': 0, u'modified': u'Sun, 22 Dec 2013 02:16:53 +0000', u'path': u'/images/sub', u'is_dir': True, u'icon': u'folder', u'root': u'dropbox', u'revision': 22}], u'revision': 17}

從我的觀點來看,我將不得不遍歷JSON對象並使用元數據中的'contents'下載每個文件,但是我不確定如何做到這一點。 請幫忙。

你是對的。 元數據的contents成員將告訴您有關您列出的文件夾中的文件(和子文件夾)的信息。 每個條目將有一個path ,告訴你它的完整路徑和成員is_dir告訴你,如果項是目錄(相對於文件)成員。 以下是一些代碼,這些代碼使用Python的列表推導來獲取指定文件夾中文件的所有路徑,然后下載每個路徑:

def download_cont(self, folder_name):
    for path in [entry['path'] for entry in self.client.metadata(folder_name)['contents'] if not entry['is_dir']]:
        name = os.path.basename(path)
        print 'Saving "%s"...' % name
        with open(name, 'wb') as out:
            with self.client.get_file(path) as f:
                out.write(f.read())

更新 :如果您沒有使用Dropbox Python SDK的最新(2.0)版本,則不應使用嵌套的with語句。 只需這樣做:

print 'Saving "%s"...' % name
with open(name, 'wb') as out:
    out.write(self.client.get_file(path).read())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM