【问题标题】:Uploading csv to google drive from blobstore using python client使用 python 客户端从 blobstore 将 csv 上传到谷歌驱动器
【发布时间】:2013-01-04 04:35:26
【问题描述】:

Google drive api 确实提供了一些示例来创建和更新电子表格。

但是,由于我们有不同的 csv,我们将设计更多。 我正在寻找的是一个通用解决方案,它将获取存储在 blobstore 中的 csv 的 url 并将这些文件保存在 Google 驱动器上。

【问题讨论】:

    标签: python-2.7 google-drive-api


    【解决方案1】:

    我的解决方案是这样的,借助 drEdit 示例:

      def get_data(self):
        blob_reader = blobstore.BlobReader(self.__blob_key__)
        data = blob_reader.read()
        fh = io.BytesIO(data)
        return fh
    
      def save_file(self, dest_filename, description, mime_type):
        service = self.create_drive()
        resource = {
          'title': dest_filename,
          'description': description,
          'mimeType': mime_type,
        }
        try:
          file_data = self.get_file_data()
          resource = service.files().insert(
              body=resource,
              media_body=MediaIoBaseUpload(
                  file_data,
                  mime_type,
                  resumable=False)
          ).execute()
        except AccessTokenRefreshError:
          pass
    

    调用 save_file:

      drive.save_file('testing_drive', 'testing....', 'text/csv')
    

    drive.save_file('testing_drive.csv', 'testing....', 'text/csv')
    

    但是,此代码存在一个小问题。 Google drive API 在上传时不会将此文件转换为电子表格,因此预览不起作用。要查看文件,我必须在电子表格中打开此文档,将文件转换为谷歌电子表格。 我在API documentation 中看到过有关转换选项的信息。 但是,在使用 RPC 调用时,我找不到任何转换文件的方法。 请建议我如何实现这一目标。

    【讨论】:

    • 我关注了this,并将 mime 类型用作 application/vnd.google-apps.spreadsheet。但是我收到以下错误:HttpError: googleapis.com/upload/drive/v2/… returned "Bad Request">
    【解决方案2】:

    据我所知,没有通用的解决方案,但我们实际上是在谈论 4 或 5 行 Python 来实现这一点。

    DrEdit Python 示例将文件从 App Engine Python 保存到云端硬盘,使用 blobstore 将是一个简单的补充。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-21
      • 1970-01-01
      • 2021-06-01
      • 2018-11-10
      • 1970-01-01
      • 2019-08-04
      • 1970-01-01
      • 2018-07-04
      相关资源
      最近更新 更多