我如何将数据附加到Google云存储上的文件中

问题描述 投票:0回答:2

我正在使用Google Cloud功能在Google Cloud存储上创建CSV文件。现在我要编辑该文件-是否可以在该文件中追加数据?如果是,那怎么办?

csv google-cloud-platform google-cloud-functions
2个回答
0
投票

我正在使用此python脚本合并跳过标题的2个csv文件。此脚本将下载两个文件,合并它们,然后在您的存储桶中创建一个新文件。

import csv
from google.cloud import storage

client = storage.Client()
bucket = client.get_bucket('YOUR.BUCKET.NAME')
blob = bucket.get_blob('FILE1.NAME')
blob.download_to_filename('FILE1.NAME')
blob2 = bucket.get_blob('FILE2.NAME')
blob.download_to_filename('FILE2.NAME')
csvs = ["FILE1.NAME", "FILE2.NAME"]
writer = csv.writer(open('appended_output.csv', 'wt'))
for x in csvs:
    with open(x, "rt") as files:
        reader = csv.reader(files)
        next(reader, None)
        for data in reader:
            writer.writerow(data)

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

-1
投票

[Google Cloud Storage是Google Cloud Platform的对象存储托管服务。与块存储或文件系统存储不同,存储的对象是不可变的。

official doc中所述:

对象是不可变的,这意味着上传的对象不能在整个存储生命周期内进行更改。对象的存储寿命是成功创建对象(上传)到成功之间的时间对象删除。实际上,这意味着您不能对对象的增量更改,例如追加操作或截断操作。但是,可以覆盖存储在Cloud Storage中,并且这种操作是原子发生的,直到新上传完成后,该对象的旧版本将投放到读者,并且上传完成后,该对象的新版本将服务于读者。所以一个简单的覆盖操作标志着一个不变对象的生命周期的结束和一个新的不可变对象的生存期。

© www.soinside.com 2019 - 2024. All rights reserved.