python - 给定 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 名称,或者已经存在一个更优雅的解决方案?
解决方案
如果您使用 python 客户端库,则有必要像您在问题中提到的那样上传文件。不过,您可以执行以下操作
import subprocess
subprocess.call("gsutil -m cp gs://my-bucket-name/* /home/<username>/rawdata/", shell=True)
您可以在此处找到类似的答案。
推荐阅读
- scala - 为什么 Akka Streams Balance 不发送给第一个可用的下游消费者?
- javascript - 在 Nest.js 应用程序中使用 typeOrm 订购所需的集合
- python - 不允许我在服务器仍在执行某些功能时调用 python flask API
- arduino - 如何将 SPI 与 ESP32 和 Arduino 一起使用
- r - 使用 rollapply 在 R 中计算滚动成对相关性时出错
- javascript - React Hook useEffect/useCallback 缺少依赖项
- swiftui - 工作表中的 TabView:“同时访问...,但修改需要独占访问”
- google-chrome-extension - Chrome 扩展开发访问网络选项卡
- git - 通过合并获取分支的历史记录
- entity-framework - i:nill="true" 出现在响应中