【问题标题】:How to copy a blob to a specific folder in a bucket?如何将 blob 复制到存储桶中的特定文件夹?
【发布时间】:2019-03-20 09:25:12
【问题描述】:

我需要通过 Python 将 Google Cloud Storage 中的一些文件从一个文件夹移动到另一个文件夹。查看他们的文档,我似乎找不到任何可以移动实际文件的东西,我需要将文件复制到另一个目录,然后删除原始文件。

我能够找到copy_blob,但是,我无法在其中看到任何内容来指定文件夹。有没有办法指定我也想复制文件的文件夹?还是有其他方法可以将文件从一个文件夹移动到另一个文件夹?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-storage google-api-python-client


    【解决方案1】:

    Google Cloud Storage 没有真正意义上的“文件夹”。如果您只是“移动”同一个存储桶中的文件,那么您实际上所做的只是更改映射到存储中 blob 的名称,您可以为此使用 rename_blob。例如:

    >>> from google.cloud import storage
    >>> storage_client = storage.Client()
    >>> bucket = storage_client.get_bucket('YOUR_BUCKET_NAME')
    >>> blob = bucket.get_blob('/path/to/folder/foo.txt')
    >>> blob.name
    '/path/to/folder/foo.txt'
    >>> bucket.rename_blob(blob, '/new/location/foo.txt')
    >>> list(bucket.list_blobs())
    [<Blob: YOUR_BUCKET_NAME, b'/new/location/foo.txt'>]
    

    如果您要在存储桶之间“移动”文件,则需要使用 copy_blob,因为您实际上需要在存储桶之间传输数据。使用此函数时,name 参数将是文件的完整路径,包括任何“文件夹”。

    【讨论】:

    • 仅供参考,根据规范,即使使用 rename_blob,您也无法逃脱您提到的“转移”。如果您在此处查看 rename_blob (googleapis.dev/python/storage/latest/buckets.html),它会说:“警告:此方法将首先复制数据,然后删除旧的 blob。”
    猜你喜欢
    • 1970-01-01
    • 2022-10-04
    • 2021-06-15
    • 2023-01-20
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    相关资源
    最近更新 更多