简体   繁体   English

Google drive api python - 如何将文件夹或文件夹中的所有文件下载到特定的本地目标路径

[英]Google drive api python - How to download all the files inside a folder or the folder to a specific local destination path

I need to download all the files inside a drive folder or the folder itself and save them in a specific local destination, my actual code is here:我需要下载驱动器文件夹或文件夹本身中的所有文件并将它们保存在特定的本地目标中,我的实际代码在这里:

import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
import io
from googleapiclient.http import MediaIoBaseDownload

# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/drive.file','https://www.googleapis.com/auth/drive.folder']

def main():
    """Shows basic usage of the Drive v3 API.
    Prints the names and ids of the first 10 files the user has access to.
    """
    creds = None
    # The file token.pickle stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.pickle'):
        with open('token.pickle', 'rb') as token:
            creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

    service = build('drive', 'v3', credentials=creds)

    # Call the Drive v3 API
    
    file_id = '1qQ8hOSudoo7ISwqSAOeqsuBdsh-ZFCqm'
    request = service.files().get_media(fileId=file_id)
    fh = io.BytesIO()
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print ("Download %d%%." % int(status.progress() * 100))

   

if __name__ == '__main__':
    main()

but it is throwing the following error, also i dont know how to set a specific local destination但它抛出以下错误,我也不知道如何设置特定的本地目的地

"HttpError: <HttpError 403 when requesting https://www.googleapis.com/drive/v3/files/1qQ8hOSudoo7ISwqSAOeqsuBdsh-ZFCqm?alt=media returned "Only files with binary content can be downloaded. Use Export with Docs Editors files.". Details: "Only files with binary content can be downloaded. Use Export with Docs Editors files.">"

Do afile.list setting parent to the file id of the directory you are looking for.file.list设置为您要查找的目录的文件 ID。

Then loop through each file returned and download it using the code you have now.然后遍历返回的每个文件并使用您现在拥有的代码下载它。

  file_id = [File id from first call]
    request = service.files().get_media(fileId=file_id)
    fh = io.BytesIO()
    downloader = MediaIoBaseDownload(fh, request)
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print ("Download %d%%." % int(status.progress() * 100))

If you are looking for a method which will do it for you you wont find one.如果您正在寻找一种可以为您完成的方法,您将找不到。 You will need to download them one at a time.您需要一次下载一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将zip文件下载到本地驱动器,并使用python 2.5将所有文件解压缩到目标文件夹 - download a zip file to a local drive and extract all files to a destination folder using python 2.5 Python Google Drive API 未列出文件夹中的所有文件 - Python Google Drive API not listing all files in folder Python:如何使用 folderId 将文件上传到 Google Drive 中的特定文件夹 - Python: How to upload files to a specific folder in Google Drive using folderId 如何使用 Google Drive API 和 Python 将文件上传到特定文件夹? - How to upload file into specific folder with Google Drive API and Python? 如何使用 Python 将文件插入/上传到 Google Drive API v3 中的特定文件夹 - How can I insert/upload files to a specific folder in Google Drive API v3 using Python 在Google Drive API Python中下载完整的文件夹层次结构 - Download a complete folder hierarchy in google drive api python Google 驱动器 API Python - 如何为使用 api 下载的文件设置目的地 - Google drive API Python - how to set a destination to files that are downloaded with the api Drive API v3 - 获取特定文件夹中的所有文件 - Drive API v3 - Getting all files inside a particular folder 使用 python 在谷歌驱动器文件夹中读取所有文件的名称(或获取它的链接) - To read the names of all files(or to get the link for it ) inside a google drive folder using python 使用python将文件上传到特定的Google Drive文件夹 - Upload files to a specific Google Drive folder using python
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM