从共享驱动器下载PyDrive文件

时间:2019-11-18 13:21:21

标签: pydrive

我知道如何使用PyDrive从驱动器下载文件,问题是我需要在共享驱动器上下载(或至少打开)xlsx文件。到目前为止,这是我下载文件的代码:

from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
gauth.LoadClientConfigFile('client_secret.json')
drive = GoogleDrive(gauth)

team_drive_id = 'XXXXX'
parent_folder_id = 'XXXXX'
file_id = 'XXXXX'

f = drive.CreateFile({
    'id': file_id,
    'parents': [{
        'kind': 'drive#fileLink',
        'teamDriveId': team_drive_id,
        'id': parent_folder_id
    }]
})
f.GetContentFile('<file_name>')

代码返回错误404(找不到文件),这很有意义:当我检查GetContentFile所查看的URL时,它是通向我的驱动器的URL,而不是共享驱动器。我可能错过了一个'supportsTeamDrives':在某处(但是在哪里?)。

https://github.com/gsuitedevs/PyDrive/issues/149上实际上有一个与我的问题相关的帖子,有人提出了完全相同的问题。显然,这使开发人员大约在两周前修改了PyDrive,但我仍然不了解如何解释他的修改以及如何解决我的问题。我没有在Stack Overflow上注意到任何其他类似的帖子(无论如何都没有从共享驱动器下载)。任何帮助将不胜感激。

亲切的问候, 贝蒂

2 个答案:

答案 0 :(得分:1)

pydrive移动到pydrive2

遇到同样的问题后,我在an issue within the googleworkspace/PyDrive GitHub page from 2020上遇到了这个评论:

<块引用>

... DVC.org 团队有一个积极维护的 PyDrive2 版本(Travis 测试,定期发布,包括 conda)...请试一试并告诉我们 - https://github.com/iterative/PyDrive2

pydrive 包移动到 pydrive2 包使我能够下载存储在 shared drive 上的文件的本地副本 只需要我知道文件 ID

安装 pydrive2 后,您可以使用以下代码模板在共享驱动器中下载文件的本地副本:

# load necessary modules ----
from pydrive2.auth import GoogleAuth
from pydrive2.drive import GoogleDrive

# authenticate yourself using your credentials
gauth = GoogleAuth()
gauth.LoadClientConfigFile('client_secret.json')
drive = GoogleDrive(gauth)

# store the file ID of the file located within the shared drive
file_id = 'XXXXX'

# store the output file name
output_file_name = 'YYYYY'

# create an instance of Google Drive file with auth of this instance
f = drive.CreateFile({'id': file_id})

# save content of this file as a local file
f.GetContentFile(output_file_name)

答案 1 :(得分:0)

我在新的Github帖子中找到了答案:https://github.com/gsuitedevs/PyDrive/issues/160

SMB784的答案有效:“ supportsTeamDrives = True”应添加到235-6行上的files.py(pydrive软件包)中。

这肯定解决了我的问题。