如何将 blob 复制到存储桶中的特定文件夹?
How to copy a blob to a specific folder in a bucket?
我需要通过 Python 将 Google 的云存储中的一些文件从一个文件夹移动到另一个文件夹。查看他们的文档,我似乎找不到任何移动实际文件的东西,我需要将文件复制到其他目录,然后删除原始文件。
我能够找到 copy_blob,但是,我无法在其中看到任何可以指定文件夹的内容。有没有办法指定我也想复制文件的文件夹?还是有另一种方法可以将文件从一个文件夹移动到另一个文件夹?
Google云存储没有真正意义上的"folders"。如果您只是 "moving" 同一个存储桶中的文件,那么您实际做的只是更改映射到存储中 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'>]
如果您是 "moving" 存储桶之间的文件,则需要使用 copy_blob
,因为您实际上需要在存储桶之间传输数据。使用此函数时,name
参数将是文件的完整路径,包括任何 "folders".
我需要通过 Python 将 Google 的云存储中的一些文件从一个文件夹移动到另一个文件夹。查看他们的文档,我似乎找不到任何移动实际文件的东西,我需要将文件复制到其他目录,然后删除原始文件。
我能够找到 copy_blob,但是,我无法在其中看到任何可以指定文件夹的内容。有没有办法指定我也想复制文件的文件夹?还是有另一种方法可以将文件从一个文件夹移动到另一个文件夹?
Google云存储没有真正意义上的"folders"。如果您只是 "moving" 同一个存储桶中的文件,那么您实际做的只是更改映射到存储中 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'>]
如果您是 "moving" 存储桶之间的文件,则需要使用 copy_blob
,因为您实际上需要在存储桶之间传输数据。使用此函数时,name
参数将是文件的完整路径,包括任何 "folders".