我在Google驱动器上有一个仅包含.jpg图片的文件夹,并且我想使用该文件夹的共享链接将该文件夹中的所有图片下载到我的计算机上。
到目前为止,我发现唯一起作用的是下面的代码,但我只能使它适用于特定的共享文件而不是整个文件夹。
from google_drive_downloader import GoogleDriveDownloader as gdd
gdd.download_file_from_google_drive(file_id='1viW3guJTZuEFcx1-ivCL2aypDNLckEMh',
dest_path='./data/mnist.zip',
unzip=True)
有没有一种方法可以修改它以使用google文件夹,或者有另一种方法可以下载google驱动器文件夹?
答案 0 :(得分:0)
如果您使用Google Drive API which you can find here的Python快速入门教程,则可以使用该API设置身份验证。然后,可以通过将搜索的MIMEType指定为jpg
来循环浏览云端硬盘并仅下载image/jpeg
文件。
首先,您要遍历驱动器using files: list
上的文件:
def listFiles(service):
listOfFiles = []
page_token = None
q = "mimeType='image/jpeg'"
#Get list of jpg files in Drive of authenticated user
while True:
response = service.files().list(q=q, spaces = "drive", fields = "nextPageToken, files(id, name)", pageToken = page_token, driveId='SHARED_DRIVE_ID', corpora='drive', includeItemsFromAllDrives=True, supportsAllDrives=True).execute()
for file in response.get('files', []):
listOfFiles.append(file)
print(listOfFiles)
page_token = response.get('nextPageToken', None)
if page_token is None:
break
然后,您可以使用files: get_media()
方法下载它们:
def downloadFiles(service):
#Download all jpegs
for fileID in listOfFiles:
response = service.files().get_media(fileId=fileID['id'])
fh = io.FileIO(fileID['name'], 'wb')
downloader = MediaIoBaseDownload(fh, response)
done = False
while done is False:
status, done = downloader.next_chunk()
print("Downloading..." + str(fileID['name']))
您可以使用here指定的q
中的listFiles()
参数来进一步优化搜索。