2017-03-17 73 views
0

我正在使用Google Driver API python库以CSV格式下载文件。Google Drive API V3 export_media缺少内容长度和内容范围

google_drive_service = get_service() 
mimeType = 'text/csv' 
request = google_drive_service.files().export_media(fileId='abc', mimeType=mimeType) 
fh = io.BytesIO() 
downloader = MediaIoBaseDownload(fh, request) 
done = False 
while not done: 
    status, done = downloader.next_chunk() 
    print "Download %d%%." % int(status.progress() * 100) 
fh.seek(0) 
content = fh.getvalue() 

由于它是一个大的选项卡,下载过程按块分解。它不断打印出“下载0%”。当代码检查下载过程时,我通过库代码循环。它始终显示“下载0%”的原因是因为http响应没有“内容范围”和“内容长度”标题,这会导致进程检查问题。

如果您有兴趣复制此过程。创建电子表格并填写列'A:E'和行'1:10000'的单元格值。让我知道是否有人有同样的问题或有线索说明为什么会发生这种情况。这里是Gdrive代码:https://github.com/google/google-api-python-client/blob/master/googleapiclient/http.py#L664-L691

回答

0

如果http请求询问它们,http响应将只包含内容范围标头。根据https://developers.google.com/drive/v3/web/manage-downloads,部分下载不支持导出,仅用于下载。

您可以尝试的几件事: - 1.在v2 API中,文件资源包含一个静态exportLinks数组。您可以尝试在适当的链接上进行部分下载。您将需要使用相同的凭据来执行您自己的REST,而不是使用Python库。 1.您可以使用Google Spreadsheets的“发布”功能创建可下载的CSV链接。