谷歌存储 python API - 上传 StringIO 对象

Tom*_*lin 3 python stringio google-cloud-platform

我成功地将文件上传到谷歌存储,但我想跳过文件的创建并改用StringIO并直接在谷歌存储上创建文件。

由于我是 python 新手,我只是尝试使用我用于上传创建的文件的标准方法:

def cloud_upload(self, buffer, bucket, filename):
    buffer.seek(0)
    client = storage.Client()
    bucket = client.get_bucket(bucket)
    blob = bucket.blob(filename)
    blob.upload_from_filename(buffer)
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

类型错误:预期的字符串或缓冲区

但是既然我给了它 StringIO 对象,我不知道为什么这不起作用?

dee*_*k28 6

希望这仍然相关。但是你可以尝试使用 blob.upload_from_string 方法

def cloud_upload(self, buffer, bucket, filename):
    client = storage.Client()
    bucket = client.get_bucket(bucket)
    blob = bucket.blob(filename)
    blob.upload_from_string(buffer.getvalue(),content_type='text/csv')
Run Code Online (Sandbox Code Playgroud)

如果要将文件另存为其他文件类型,请注意修改 content_type 参数。我以“text/csv”为例。默认值为“文本/纯文本”。