如何从 Google 驱动器中的 python 内存中读取(流式传输)文件?
How to read (stream) files from Google Drive in memory in python?
我正在尝试使用 google-api-python-客户端 https://google.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html 读取放在 Google 驱动器上的大型 CSV 文件
我可以通过以下操作将文件下载到硬盘上:
request = drive_service.files().get_media(fileId=file_id)
fh = io.FileIO('test.csv', mode='w')
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
但我想知道是否有一种简单的方法可以在内存中以块的形式读取它。
api_service_object = self.service
request = api_service_object.files().get_media(fileId=file_id)
stream = io.BytesIO()
downloader = MediaIoBaseDownload(stream, request)
done = False
# Retry if we received HttpError
for retry in range(0, 5):
try:
while done is False:
status, done = downloader.next_chunk()
print "Download %d%%." % int(status.progress() * 100)
return stream.getvalue()
except HTTPError as error:
print 'There was an API error: {}. Try # {} failed.'.format(
error.response,
retry,
)
我正在尝试使用 google-api-python-客户端 https://google.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html 读取放在 Google 驱动器上的大型 CSV 文件
我可以通过以下操作将文件下载到硬盘上:
request = drive_service.files().get_media(fileId=file_id)
fh = io.FileIO('test.csv', mode='w')
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
但我想知道是否有一种简单的方法可以在内存中以块的形式读取它。
api_service_object = self.service
request = api_service_object.files().get_media(fileId=file_id)
stream = io.BytesIO()
downloader = MediaIoBaseDownload(stream, request)
done = False
# Retry if we received HttpError
for retry in range(0, 5):
try:
while done is False:
status, done = downloader.next_chunk()
print "Download %d%%." % int(status.progress() * 100)
return stream.getvalue()
except HTTPError as error:
print 'There was an API error: {}. Try # {} failed.'.format(
error.response,
retry,
)