【问题标题】:Download file google drive python下载文件谷歌驱动python
【发布时间】:2017-11-27 10:30:00
【问题描述】:

如何从googledrive 下载文件?

我通过链接使用pydrive

#https://drive.google.com/open?id=DWADADDSASWADSCDAW
    from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive

gauth = GoogleAuth()
drive = GoogleDrive(gauth)

gdrive_file = drive.CreateFile({'id': 'id=DWADADDSASWADSCDAW'})
gdrive_file.GetContentFile('DWADSDCXZCDWA.zip') # Download content file.

错误:

raceback (most recent call last):
  File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\oauth2client\clientsecrets.py", line 121, in _loadfile
    with open(filename, 'r') as fp:
FileNotFoundError: [Errno 2] No such file or directory: 'client_secrets.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\auth.py", line 386, in LoadClientConfigFile
    client_type, client_info = clientsecrets.loadfile(client_config_file)
  File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\oauth2client\clientsecrets.py", line 165, in loadfile
    return _loadfile(filename)
  File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\oauth2client\clientsecrets.py", line 125, in _loadfile
    exc.strerror, exc.errno)
oauth2client.clientsecrets.InvalidClientSecretsError: ('Error opening file', 'client_secrets.json', 'No such file or directory', 2)

During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
      File "C:/Users/Hoxton/123/pyu_test.py", line 8, in <module>
        gdrive_file.GetContentFile('PyUpdater+App-win-1.0.zip') # Download content file.
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\files.py", line 210, in GetContentFile
        self.FetchContent(mimetype, remove_bom)
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\files.py", line 42, in _decorated
        self.FetchMetadata()
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\auth.py", line 57, in _decorated
        self.auth.LocalWebserverAuth()
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\auth.py", line 113, in _decorated
        self.GetFlow()
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\auth.py", line 443, in GetFlow
        self.LoadClientConfig()
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\auth.py", line 366, in LoadClientConfig
        self.LoadClientConfigFile()
      File "C:\Users\Hoxton\AppData\Local\Continuum\miniconda3\lib\site-packages\pydrive\auth.py", line 388, in LoadClientConfigFile
        raise InvalidConfigError('Invalid client secrets file %s' % error)
    pydrive.settings.InvalidConfigError: Invalid client secrets file ('Error opening file', 'client_secrets.json', 'No such file or directory', 2)

    Process finished with exit code 1

【问题讨论】:

标签: python python-3.x download google-drive-api pydrive


【解决方案1】:

试试documentation中提供的示例代码。

Drive API 允许您下载存储在 Google 中的文件 驾驶。此外,您还可以下载 Google 文档的导出版本 (文档、电子表格、演示文稿等)格式为您的 应用程序可以处理。 Drive 还支持为用户提供直接访问 通过 webViewLink 属性中的 URL 文件。

这里是code snippet

file_id = '0BwwA4oUTeiV1UVNwOHItT0xfa2M'
request = drive_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)

【讨论】:

    【解决方案2】:

    嘿,我知道现在回答有点晚了,但它仍然可能对某人有所帮助。

    我在使用 G-sheets 时遇到了类似的问题,这里的问题是下载文件可能有多种格式,而您没有指定要使用哪种格式。为此,您需要将 mimetype 参数添加到GetContentFile 方法。像这样:

    gdrive_file.GetContentFile('DWADSDCXZCDWA.zip', mimetype = 'application/zip')
    

    请注意,zip 文件有多种 mimetype,并且 mimetype 和扩展名需要一致。所以你需要知道使用哪一个,或者如果你不使用,就尝试不同的。这是一个方便的清单:

    • 应用程序/x-压缩
    • application/x-zip-compressed
    • 应用程序/zip
    • 多部分/x-zip

    此外,如果您实际访问文件的元数据,您可以在“exportLinks”下查看可以导出的所有格式类型。会有一个带有 mimetypes 和相关链接的 dict。

    【讨论】:

    • 如果您考虑他们收到的错误消息,这不是正确的答案。 mimetype 也不是函数的必需参数。
    • @gshpychka 我没有说它是必需的,我说你需要在这种情况下添加它。不过,您是对的,他们发布的错误消息似乎与他们没有 client_secrets 文件的事实有关。无论如何,由于 mimetype,该程序稍后会引发错误。
    猜你喜欢
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多