2017-08-04 21 views
0

私はGoogleの-API-のpython-クライアント私はこれやって、ハードドライブ上のファイルをダウンロードすることができましたhttps://google.github.io/google-api-python-client/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.htmlPythonでメモリ内のGoogleドライブからファイルを読み込む方法

を使用して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() 

しかし、私はメモリ内のチャンクでそれを読む簡単な方法があるのだろうかと思っていました。

+0

[Pythonの - メモリに直接、要求を使用してファイルをダウンロード]の可能複製(https://stackoverflow.com/questions/22340265/python-download-file-using-requests-directly-to-memory) – DaImTo

答えて

0
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, 
      ) 
関連する問題