python:如何使用api从Google驱动器下载文件

时间:2015-02-03 20:51:05

标签: python-2.7 google-drive-api django-1.7

我想使用google drive api将google驱动器中的文件下载到我的系统。我该如何实现呢?

根据https://developers.google.com/drive/v2/reference/files/get#examples

给出的示例
def print_file(service, file_id):

 """Print a file's metadata.

  Args:
    service: Drive API service instance.
    file_id: ID of the file to print metadata for.
  """
  try:
    file = service.files().get(fileId=file_id).execute()

    print 'Title: %s' % file['title']
    print 'MIME type: %s' % file['mimeType']
  except errors.HttpError, error:
    print 'An error occurred: %s' % error


def download_file(service, drive_file):
  """Download a file's content.

  Args:
    service: Drive API service instance.
    drive_file: Drive File instance.

  Returns:
    File's content if successful, None otherwise.
  """
  download_url = drive_file.get('downloadUrl')
  if download_url:
    resp, content = service._http.request(download_url)
    if resp.status == 200:
      print 'Status: %s' % resp
      return content
    else:
      print 'An error occurred: %s' % resp

我能够找到该文件,但是如何将其本地下载到我的机器上?

3 个答案:

答案 0 :(得分:2)

只是将内容变量写入文件而不是返回内容

fo = open("foo.jpg", "wb")
fo.write(content)
fo.close()

答案 1 :(得分:1)

我想你应该看看这个:

http://pythonhosted.org/PyDrive/

代码似乎更容易

# Initialize GoogleDriveFile instance with file id.
file6 = drive.CreateFile({'id': file5['id']})
file6.GetContentFile('catlove.png') # Download file as 'catlove.png'.

# Initialize GoogleDriveFile instance with file id.
file7 = drive.CreateFile({'id': file4['id']})
content = file7.GetContentString()
# content: '{"firstname": "Claudio", "lastname": "Afshar"}'

答案 2 :(得分:0)

如果我理解正确,你有下载链接,所以你可以使用它:

import urllib2
response = urllib2.urlopen('http://www.example.com/file.mp3')
html = response.read()

或:

import urllib
testfile = urllib.URLopener()
testfile.retrieve("http://example.com/file.mp3", "file.mp3")
注意,比你告诉你有权访问! 所以它意味着文件必须是公共的,或者你必须使用身份验证来证明谷歌你有权访问该文件!

希望这能帮助你;)