簡體   English   中英

使用 Python SDK 從 Dropbox Team 文件夾下載文件

[英]Download files from Dropbox Team folder using Python SDK

我正在嘗試從 Dropbox Team 文件夾下載文件,按照 StackOverflow 不同帖子的建議,我嘗試使用 files_list_folder() 創建訪問密鑰,但是,dropboxTeam 類無法訪問此方法。

dbx = dropbox.DropboxTeam(_dropbox_token)

dbx.files_list_folder() # here this method not showing

所以,幫我做吧。 整個想法是從文件夾的文件夾中獲取文件列表,循環遍歷它們並下載。

files_list_folder方法在特定 Dropbox 用戶的帳戶上運行,而不是在整個 Dropbox 團隊上運行,因此它只存在於dropbox.Dropbox ,而不存在於dropbox.DropboxTeam 這同樣適用於files_list_folder_continuefiles_download等。

如果您只需要連接到個人 Dropbox 帳戶以訪問該帳戶中的文件(無論該帳戶是否屬於 Dropbox Business 團隊),您可以注冊一個“ Dropbox API ”應用程序並使用以下命令直接創建一個dropbox.Dropbox對象連接到您的應用程序的任何用戶的訪問令牌。

如果您確實需要能夠連接到整個 Dropbox Business 團隊的任何成員,您應該注冊一個“ Dropbox Business API ”應用並使用生成的訪問令牌創建一個dropbox.DropboxTeam對象。 該對象適用於整個團隊,但您可以使用“團隊成員文件訪問”功能通過DropboxTeam.as_userDropboxTeam.as_admin方法訪問特定成員的帳戶。

所以總結一下:

  • 如果您使用的是“Dropbox API”應用,您的代碼應如下所示:
dbx = dropbox.Dropbox(_dropbox_token)

dbx.files_list_folder()
  • 如果您使用的是“Dropbox Business API”應用,您的代碼應如下所示:
dbx = dropbox.DropboxTeam(_dropbox_token).as_user(member_id)

dbx.files_list_folder()

此外,有關如何訪問 Dropbox 帳戶的不同部分(例如團隊文件夾)的信息,請查看命名空間指南內容訪問指南 要設置命名空間指南中提到的Dropbox-API-Path-Root標頭,請使用Dropbox.with_path_root方法。

對於下面的 Dropbox Business API,python 代碼有助於從 Dropbox 下載文件。

#功能

代碼

def dropbox_file_download(access_token,dropbox_file_path,local_folder_name):

try:
    dropbox_file_name = dropbox_file_path.split('/')[-1]
    dropbox_file_path = '/'.join(dropbox_file_path.split('/')[:-1])
    dbx = dropbox.DropboxTeam(access_token)
    # get the team member id for common user
    members = dbx.team_members_list()
    for i in range(0,len(members.members)):
        if members.members[i].profile.name.display_name == logged_user_name:
            member_id = members.members[i].profile.team_member_id
            break
    # connect to dropbox with member id
    dbx = dropbox.DropboxTeam(access_token).as_user(member_id)
    # list all the files from the folder
    result = dbx.files_list_folder(dropbox_file_path, recursive=False)
    #  download given file from dropbox
    for entry in result.entries:
        if isinstance(entry, dropbox.files.FileMetadata):
            if entry.name == dropbox_file_name:
                dbx.files_download_to_file(local_folder_name+entry.name, entry.path_lower)
                return True
    return False
except Exception as e:
    print(e)
    return False

暫無
暫無

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

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