Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python下载共享的Google驱动器文件夹_Python_Download_Google Drive Api - Fatal编程技术网

使用Python下载共享的Google驱动器文件夹

使用Python下载共享的Google驱动器文件夹,python,download,google-drive-api,Python,Download,Google Drive Api,我在谷歌硬盘上有一个文件夹,里面只有.jpg图片,我想使用文件夹的共享链接将文件夹中的所有图片下载到我的计算机上 到目前为止,我发现唯一有效的是下面的代码,但我只能让它用于特定的共享文件,而不是整个文件夹 from google_drive_downloader import GoogleDriveDownloader as gdd gdd.download_file_from_google_drive(file_id='1viW3guJTZuEFcx1-ivCL2aypDNLckEMh',

我在谷歌硬盘上有一个文件夹,里面只有.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驱动器文件夹?

如果您使用针对google驱动器API的Python快速启动教程,您将能够使用该API设置身份验证。然后,通过将搜索的MIMEType指定为
image/jpeg
,您可以在驱动器中循环并仅下载
jpg
文件

首先,要循环浏览驱动器上的文件:

#注意:可以从共享链接解析文件夹id
def列表文件(服务,文件夹id):
listOfFiles=[]
query=f在父级和mimeType='image/jpeg'中的“{folder_id}”
#获取共享文件夹中的jpg文件列表
page_token=None
尽管如此:
响应=service.files().list(
q=查询,
fields=“nextPageToken,files(id,name)”,
pageToken=页面标记,
includeItemsFromAllDrives=True,
supportsAllDrives=True
).execute()
对于响应中的文件。get('files',[]):
追加(文件)
page_token=response.get('nextpGetOken',无)
如果page_标记为None:
打破
返回文件列表
然后,您可以使用
文件:get_media()
方法下载它们:

导入io
从GoogleAppClient.http导入MediaIoBaseDownload
def下载文件(服务、列表文件):
#下载所有JPEG
对于listOfFiles中的fileID:
request=service.files().get_媒体(fileId=fileId['id'])
fh=io.FileIO(fileID['name'],'wb')
downloader=MediaIoBaseDownload(fh,请求)
完成=错误
虽然完成是错误的:
状态,done=downloader.next_chunk()
打印(“下载…”+str(fileID['name']))

您可以使用
listFiles()
中指定的
q
参数进一步优化搜索。

我想您的问题在这里得到了回答:@aseembhartiya我也尝试过,但它只适用于特定的文件,我需要下载整个文件夹。我可以问一下您的情况吗?您想下载共享文件夹中的所有文件。如果我的理解是正确的,您需要使用python吗?例如,有一个CLI工具用于从共享文件夹下载所有文件。这个怎么样?若我误解了你们的问题,我道歉。@Tanaike我只是需要一些方法让python运行的程序从共享的google驱动器文件夹下载文件。它将在覆盆子上运行Pi@Brandalf谢谢你的回复。我不确定这个CLI工具是否可以用于您的情况,这个怎么样?感谢您的建议,但我尝试制作的程序必须仅使用共享google驱动器文件夹中的链接。我已更新了答案,在
文件:list()
中包含搜索特定共享驱动器的参数。确保将
'SHARED\u DRIVE\u ID'
更改为共享驱动器的ID。