如何使用带范围标头选项的Python脚本从驱动器API下载大文件的一部分

如何使用带范围标头选项的Python脚本从驱动器API下载大文件的一部分,python,download,http-headers,google-drive-api,partial,Python,Download,Http Headers,Google Drive Api,Partial,基于 我已经创建了一个函数,但无法使其工作。 如何将范围选项传递给标题 resp, content = service._http.request(download_url, headers={'Range': 'bytes=0-299'}) def download_file(service, file_id): drive_file = service.files().get(fileId=file_id).execute() download_url = drive_file

基于

我已经创建了一个函数,但无法使其工作。 如何将范围选项传递给标题

resp, content = service._http.request(download_url, headers={'Range': 'bytes=0-299'})


def download_file(service, file_id):
  drive_file = service.files().get(fileId=file_id).execute()
  download_url = drive_file.get('downloadUrl')
  title = drive_file.get('title')
  originalFilename = drive_file.get('originalFilename')
  if download_url:
      resp, content = service._http.request(download_url, headers={'Range': 'bytes=0-299'})    
      if resp.status == 200:
         file = 'tmp.mp4'
         with open(file, 'wb') as f:
             while True:
              tmp = content.read()
              if not tmp:
                  break
              f.write(tmp)
      return title, file
    else:
      print 'An error occurred: %s' % resp
      return None
  else:
    return None
我得到:

发生错误:{'status':'206','alternate protocol': '443:quic,p=0.02','content-length':'300', “访问控制允许标头”:“接受,接受语言, 授权、缓存控制、内容处置、内容编码、, 内容语言、内容长度、Content-MD5、内容范围、, 内容类型、日期、GData版本、主机、如果匹配、如果自, 如果不匹配,如果未修改自,则为Origin,OriginToken,Pragma, 范围、段塞、传输编码、X-ClientDetails、X-GData-Client、, X-GData-Key,X-Goog-AuthUser,X-Goog-PageId, X-Goog-Encode-Response-If-Executable,X-Goog-Correlation-Id, X-Goog-Request-Info,X-Goog-Experiments,X-Goog-iam-role, x-goog-iam-authorization-token,x-goog-Spatula,x-goog-Upload-Command, X-Goog-Upload-Content-Disposition,X-Goog-Upload-Content-Length, X-Goog-Upload-Content-Type,X-Goog-Upload-File-Name, X-Goog-Upload-Offset,X-Goog-Upload-Protocol,X-Goog-Visitor-Id, X-HTTP-Method-Override,X-JavaScript-User-Agent,X-Pan-Versionid, X-Origin,X-Referer,X-Upload-Content-Length,X-Upload-Content-Type, X-Use-HTTP-Status-Code-Override,X-YouTube-VVT,X-YouTube-Page-CL, X-YouTube-Page-Timestamp“内容处置”: '附件;filename=“1981-0930公共计划,第7天,第1部分, 维舒迪脉轮, NYC.mpg“filename*=UTF-8\'1981-0930%20Public%20Program%2C%20Day%207%2C%20Part%201%2C%20Vishuddhi%20Chakra%2C%20NYC.mpg”, “访问控制允许凭据”:“false”,“expires”:“Sun,12月28日” 2014 09:09:35 GMT,“服务器”:UploadServer(“于2014年12月19日构建 10:24:45(1419013485)”,“内容范围”:“字节0-299/1885163442”, “缓存控制”:“私有,最大年龄=0”,“日期”:“2014年12月28日,星期日” 09:09:35 GMT“,”访问控制允许原点“:“*”, “访问控制允许方法”:“获取,选项”,“内容类型”: “视频/mpeg”}

谢谢

代码

  resp, content = service._http.request(download_url, headers={'Range': 'bytes=0-299'})    

是正确的

那么你观察到了什么问题…?我得到了206(见我的编辑),谢谢我发现了一个错误,206是可以的:)所以如果resp.status==206:正确:206表示“部分内容”-正是你要求的!