Google Storage // Cloud Function // Python 修改 Bucket 中的 CSV 文件

尼基塔

谢谢阅读。

我在接触 Bucket 中的 csv 文件时遇到了一些问题,我知道如何复制/重命名/移动文件,但我不知道如何在不下载到本地机器的情况下修改文件。

实际上我有一个主要的想法,它的下载 blob(csv 文件)作为字节然后修改并作为字节上传到存储桶。但我不明白如何修改字节。

我应该如何触摸 csv:添加新的标题 - 日期,并在 csv 的每一行中添加值(today.date)

---INPUT--- 存储桶中的 CSV 文件:

一种
1 2

--OUTPUT--- 更新了 Bucket 中的 CSV 文件:

一种 日期
1 2 今天

我的代码:

def addDataToCsv(bucket,fileName):
    today = str(date.today())

    bucket = storage_client.get_bucket(bucket)
    blob = bucket.blob(fileName)
    fileNameText = blob.download_as_string()
    
    /// This should be a magic bytes modification //

    blobNew = bucket.blob(path+'/'+'mod.csv')
    blobNew.upload_from_string(fileNameText,content_type='text/csv')


请帮忙,谢谢你的时间和精力

亚历克斯

如果我理解,您想修改存储桶中的 CSV 文件而不将其下载到本地机器文件系统。

除了元数据之外,无法直接从 Cloud Storage Bucket编辑文件,因此您需要以某种方式将其下载到本地计算机并将更改推送到存储桶。

对象是不可变的,这意味着上传的对象在其整个存储生命周期内不能更改。

但是,一种方法是使用Cloud Storage FUSE,它将 Cloud Storage 存储桶挂载为文件系统,以便您可以从那里编辑任何文件并将更改应用于您的存储桶。

尽管如此,如果这对您来说不是一个合适的解决方案,可以通过解码字节对象(通常使用 UTF-8,尽管取决于您的字符)并在上传之前重新编码,按照您的建议下载和修改字节。

# Create an array of every CSV file line
csv_array = fileNameText.decode("utf-8").split("\n")
# Add header
csv_array[0] = csv_array[0] + ",date\n"
# Add the date to each field
for i in range(1,len(csv_array)):
    csv_array[i] = csv_array[i] + "," + today + "\n"
# Reencode from list to bytes to upload
fileNameText = ''.join(csv_array).encode("utf-8")

考虑到如果你的本地机器有一些严重的存储或性能限制,如果你的 CSV 足够大,可能会导致像上面那样处理它的问题,或者仅供参考,你可以使用compose 命令为此,您需要修改上面的代码,以便每次只编辑 CSV 文件的某些部分,上传,然后gsutil compose在 Cloud Storage 中加入

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何通过 Pandas 从 Google Cloud Function 中的 Google Cloud Storage 访问 csv 文件?

在 Google Cloud Storage Bucket 中运行 PHP

努力从 Google Cloud Storage 存储桶中读取 csv 文件

将Python文件上传到Google Cloud Storage Bucket返回管道中断错误

使用Python将文件上传到Google Cloud Storage Bucket子目录

列出Google Cloud Bucket中的文件

从Google Cloud Storage Bucket下载文件夹

Google Cloud Storage加入多个csv文件

从Cloud Function(Python)写入Google Cloud Storage

使用Python脚本中的Google Cloud Functions从Google Cloud Storage中读取CSV

从Google Cloud Function(Python)将新文件写入Google Cloud Storage存储桶

在Java中设置Google Cloud Storage Bucket访问日志

如何使用Google Cloud Function将文件从Cloud Storage存储桶中推送到实例中?

如何使用带有 Python 的 Google Cloud Functions 将列表写入 Google Cloud Storage 中的文件

Google Cloud Storage中的Concat Avro文件

使用Google Cloud Dataflow合并Google Cloud Storage中的文件

Google Cloud Bucket 文件路径

在python中写入然后修改CSV文件

从Google Cloud Storage加载CSV文件时出现BigQuery错误

使用PHP和Ajax将文件上传到Google Cloud Storage Bucket

如何将文件上传到 Google Cloud Storage Bucket 子目录

GCS-将Google Cloud Storage中的文本文件直接读入python

如何使用python遍历Google Cloud Storage子目录中的所有文件名?

Google Cloud Storage + Python:是否可以在GCS的某些文件夹中列出obj?

在python + flask + gunicorn + nginx + Compute Engine应用中,无法从Google Cloud Storage读取文件

将python对象上传到Google Cloud Storage,而不保存到文件中

使用Python在Google Cloud Storage存储桶中创建/上传新文件

GCP AI平台无法读取存储在Google Cloud Storage(Python)中的.SAV文件

将CSV文件从Google Cloud Storage导入到Google Cloud SQL