首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据附加到google云存储文件中?

问如何将数据附加到google云存储文件中?
EN

Stack Overflow用户
提问于 2019-11-20 05:54:29
回答 3查看 11.6K关注 0票数 12

我正在使用google云功能在google云存储上创建一个CSV文件。现在我想编辑那个文件-可以在该文件中追加数据吗?如果是,那怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-20 07:12:19

是面向Google平台的对象存储管理服务。与块存储或文件系统存储不同,存储的对象是不可变的。

正如官方医生中提到的那样:

对象是不可变的,这意味着上载的对象在其存储寿命期间不能更改。对象的存储生存期是从成功创建对象(上载)到成功删除对象之间的时间。实际上,这意味着您不能对对象进行增量更改,例如追加操作或截断操作。然而,有可能覆盖存储在云存储中的对象,并且这样做是原子性的--直到新上传完成之前,对象的旧版本将被提供给读者,并且在上传完成之后,对象的新版本将被服务给读者。因此,一个覆盖操作仅仅标志着一个不可变对象的生存期的结束和一个新的不可变对象的生存期的开始。

作为一种解决办法,我们可以考虑将多个文件上传到一个桶中,然后将所有以前的文件都上传到通过组合创建一个新对象中。

代码语言:javascript
复制
gsutil compose gs://bucket/obj1 [gs://bucket/obj2 ...] gs://bucket/composite

注意,这个compose命令也可以通过JSON API获得:

代码语言:javascript
复制
POST https://storage.googleapis.com/storage/v1/b/bucket/o/destinationObject/compose

并通过云存储客户端库

所以这个调用可以很容易地集成到您的代码中。确保在需要的角色之前授予对桶的访问权限。

检查正式文件

票数 18
EN

Stack Overflow用户

发布于 2019-11-20 08:45:18

我使用这个python脚本将数据附加到csv文件中。此脚本将下载文件,追加数据并再次上传到桶中的同一个文件。您可以在云函数中轻松地实现这一点。

代码语言:javascript
复制
import csv
from google.cloud import storage

client = storage.Client()
bucket = client.get_bucket('thehotbucket')
blob = bucket.get_blob('data1.csv')
blob.download_to_filename('data1.csv')
fields = ['first', 'second', 'third']
with open(r'data1.csv', 'a') as f:
    writer = csv.writer(f)
    writer.writerow(fields)

blob = bucket.blob("data1.csv")
blob.upload_from_filename("data1.csv")

如果您只想合并文件,可以使用gsutil命令。

代码语言:javascript
复制
gsutil compose gs://bucket/obj1 [gs://bucket/obj2 ...] gs://bucket/obj1
票数 4
EN

Stack Overflow用户

发布于 2019-11-20 15:40:40

GCS是一个对象存储,一旦推到GCS桶中,就不允许更新/编辑文件。

更新驻留在GCS桶中的文件的唯一方法是下载该文件->进行所需的更改,然后再回推到GCS桶。这将覆盖包含新内容的文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58947608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档