从 GCP Bucket 读取 csv,然后将其保存回 pickle 文件

Read csv from GCP Bucket, then save it back as pickle file

我正在从 Google Cloud Platform 的某个存储桶中读取一个 csv 文件。

阅读并在我的 jupyter notebook 上实例化后,我想将它保存回同一个存储桶,但作为 pickle 文件。为此,我正在尝试:

new_blob = blob.name.replace(("." + file_type), '') + '_v1'
df.to_pickle(f"gs://my_bucket/{new_blob}.pkl")

如您所见,我从 blob 中获取原始名称,df 已经是数据帧(file_type 是原始扩展名,如 'csv')。如果我将它保存到我的本地主机,它会起作用。

然而,当我运行它时,没有出现错误。它 运行 好像有效 - 但当我检查存储桶时,我没有找到假装的文件。有什么想法吗?

您需要先将pickled文件保存到本地,然后使用gs上传:

from google.cloud import storage

client = storage.Client()

new_blob = blob.name.replace(("." + file_type), "") + "_v1"
fname = f"{new_blob}.pkl"
df.to_pickle(fname)
new_blob = new_bucket.blob("/my_bucket/" + fname)
new_blob.upload_from_filename(filename=fname)

或者,将文件保存到本地后,您可以执行

$ gsutil cp file_name.csv gs://bucket_name/file_name.pkl

这也可以直接从 jupyter 中实现,方法是将命令放在其中一个笔记本单元格中并在其前面加上感叹号。