Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于上传到Google云存储的子流程调用或python库?_Python_Google Cloud Platform_Google Cloud Storage - Fatal编程技术网

用于上传到Google云存储的子流程调用或python库?

用于上传到Google云存储的子流程调用或python库?,python,google-cloud-platform,google-cloud-storage,Python,Google Cloud Platform,Google Cloud Storage,我正在尝试做一个脚本来上传文件到谷歌云存储。我注意到有两种方法可以做到这一点: a) 使用gsutil并通过子流程从python调用它 b) 使用“原生”方法从google.cloud导入存储 每种方法的优点/缺点是什么? (a)方法似乎更简单,但我不知道与b)方法相比是否有任何缺点 谢谢 (a)的例子 (b)的例子 底线是你应该选择最适合你偏好的方法。如果这两种方式对你都有效,那么这是一个偏好的问题 但是,如果您打算在除了正确安装和配置了gsutil的机器之外的任何地方运行此代码,那么您将遇到

我正在尝试做一个脚本来上传文件到谷歌云存储。我注意到有两种方法可以做到这一点:

a) 使用gsutil并通过子流程从python调用它 b) 使用“原生”方法从google.cloud导入存储

每种方法的优点/缺点是什么? (a)方法似乎更简单,但我不知道与b)方法相比是否有任何缺点

谢谢

(a)的例子

(b)的例子


底线是你应该选择最适合你偏好的方法。如果这两种方式对你都有效,那么这是一个偏好的问题

但是,如果您打算在除了正确安装和配置了gsutil的机器之外的任何地方运行此代码,那么您将遇到问题。它变成了一个外部依赖项,您可能不喜欢尝试在任何地方设置它,除非它已经工作了

如果您希望更轻松地移动此代码,则客户端库更容易预测,并且应该在有internet连接的任何位置运行,前提是您的代码可以使用服务帐户凭据来初始化SDK

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)
])
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
        )
    )