如何解决用于上传到 Google Cloud Storage 的子进程 CALL 或 python 库?
我正在尝试编写一个脚本来将文件上传到 Google Cloud Storage。我注意到有两种方法可以做到这一点:
a) 使用 gsutil 并通过子进程从 python 调用它 b) 使用“本机”方法从 google.cloud 导入存储。
每种方法的优缺点是什么? (a) 方法似乎更容易,但我不知道与 b) 方法相比是否有任何缺点。
谢谢!
(a) 的例子
filename='myfile.csv'
gs_bucket='my/bucket'
parallel_threshold='150M' # minimum size for parallel upload; 0 to disable
subprocess.check_call([
'gsutil','-o','GSUtil:parallel_composite_upload_threshold=%s' % (parallel_threshold,),'cp',filename,'gs://%s/%s' % (gs_bucket,filename)
])
(b) 的例子
from google.cloud import storage
def upload_blob(bucket_name,source_file_name,destination_blob_name):
"""Uploads a file to the bucket."""
# bucket_name = "your-bucket-name"
# source_file_name = "local/path/to/file"
# destination_blob_name = "storage-object-name"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(source_file_name)
print(
"File {} uploaded to {}.".format(
source_file_name,destination_blob_name
)
)
解决方法
最重要的是,您应该选择最适合您偏好的方法。如果这两种方式都适合您,那就是偏好问题。
但是,如果您打算在除了正确安装和配置 gsutil 的机器之外的任何地方运行此代码,您都会遇到问题。它变成了一种外部依赖,你可能不喜欢尝试在它已经可以工作的地方之外的任何地方设置它。
如果您想更轻松地移动此代码,则客户端库更具可预测性,并且应该可以在任何有互联网连接的地方运行,假设您的代码具有可用于初始化 SDK 的服务帐户凭据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。