我知道如何使用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上注意到任何其他类似的帖子(无论如何都没有从共享驱动器下载)。任何帮助将不胜感激。
亲切的问候, 贝蒂
答案 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软件包)中。
这肯定解决了我的问题。