【问题标题】:Upload CSV file to Google Cloud Storage using Python使用 Python 将 CSV 文件上传到 Google Cloud Storage
【发布时间】:2017-04-02 16:41:28
【问题描述】:

我需要用 Python 自动将本地 csv 文件上传到 Google Cloud 存储桶。我可以使用哪个 Python 库?任何示例代码将不胜感激。

【问题讨论】:

    标签: python google-cloud-storage


    【解决方案1】:

    另一种方式如link所示。

    首先,连接到云端

    from gcloud import storage
    client = storage.Client()
    

    然后选择存储桶并选择远程文件名

    bucket = client.get_bucket('<your-bucket-name>')
    blob = bucket.blob('remote_file.txt')
    

    最后,上传本地文件。我更喜欢以下方式,但还有其他方式。

    blob.upload_from_filename('local_file_txt')
    

    如果你有一个变量,上面一行要求你将你的变量写入磁盘,然后上传,这可能不是最好的方法。相反,您可以直接从字符串写入 blob。

    blob.upload_from_string('this is test content!')
    

    【讨论】:

      【解决方案2】:

      我们可以使用谷歌python客户端api将文件上传到谷歌云存储。

      首先,安装api客户端如下。

      >pip install --upgrade google-api-python-client
      

      然后,启用 api 身份验证以获取应用程序默认凭据。

      >gcloud beta auth application-default login
      

      以下是使用应用程序默认凭据将本地文件上传到谷歌云存储的示例代码。

      from googleapiclient import discovery
      from oauth2client.client import GoogleCredentials
      
      credentials = GoogleCredentials.get_application_default()
      service = discovery.build('storage', 'v1', credentials=credentials)
      
      filename = 'C:\\MyFiles\\sample.csv'
      bucket = 'my_bucket'
      
      body = {'name': 'dest_file_name.csv'}
      req = service.objects().insert(bucket=bucket, body=body, media_body=filename)
      resp = req.execute()
      

      这将上传 my_bucket 中的文件。上传文件的完整 google 存储 url 为 gs://my_bucket/dest_file_name.csv

      【讨论】:

        【解决方案3】:

        您可以使用 pandas 库。按照下面的例子:

        import pandas as pd
        tobq = pd.read_csv("local.csv")
        pd.io.gbq(tobq, "big_query_table_name", "project_name", private_key="big_query_private_key.json")
        

        【讨论】:

        • 您的回答与 GCS 无关,而是与 BigQuery 有关。
        【解决方案4】:

        您不需要导入任何库。 您可以向方法的 /upload URI 创建 POST 请求并添加查询参数

        uploadType=media
        

        例如:

        POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media
        

        添加名称查询参数以识别上传与哪个资源相关联。

        例如,指定一个对象的名称是 myObject:

        POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media&name=myObject
        

        将文件的数据添加到请求正文中。 添加以下 HTTP 标头:

        • 内容类型。设置为上传对象的 MIME 媒体类型。
        • 内容长度。设置为您要上传的字节数。如果您使用分块传输编码,则不需要此标题。

        上传示例:

        POST https://www.googleapis.com/upload/storage/v1/b/myBucket/o?uploadType=media&name=myObject HTTP/1.1
        Content-Type: [csv]
        Content-Length: [NUMBER_OF_BYTES_IN_FILE]
        Authorization: Bearer [YOUR_AUTH_TOKEN]
        
        [DATA]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-07
          • 1970-01-01
          • 2014-11-22
          • 2020-06-13
          • 2014-01-05
          • 2018-10-31
          • 1970-01-01
          • 2018-12-23
          相关资源
          最近更新 更多