首页 > 解决方案 > 给定 URI,通过 Python 将文件上传到 Google Storage

问题描述

我想将一个文件上传到谷歌存储,只是给出了格式的存储 uri gs://<bucket_name>/<blob_name>

我知道可以使用类似的代码在 Python 中上传文件

def upload_file(filepath, bucket_name, blob_name):
   client = storage.Client()
   bucket = client.get_bucket(bucket_name)
   blob = bucket.blob(blob_name)
   blob.upload_from_filename(filepath)

但我实际上更喜欢的是一个只获取本地文件路径和谷歌存储 uri 的函数,类似于 gsutil 的复制命令:gsutil cp <filepath> gs://<bucket_name>/<blob_name>. 所以,这样的事情:

def upload_file_to_uri(filepath, gs_uri):
   pass

我是否必须编写一个正则表达式命令来解析给定 uri 中的存储桶和 blob 名称,或者已经存在一个更优雅的解决方案?

标签: pythongoogle-cloud-platformgoogle-cloud-storage

解决方案


如果您使用 python 客户端库,则有必要像您在问题中提到的那样上传文件。不过,您可以执行以下操作

import subprocess
subprocess.call("gsutil -m cp gs://my-bucket-name/* /home/<username>/rawdata/", shell=True)

您可以在此处找到类似的答案。


推荐阅读