如何通过Python将Google Cloud Storage中的文件从一个存储桶移动到另一个存储桶

use*_*827 7 python google-cloud-storage

是否有任何API功能允许我们从另一个存储桶中的一个存储桶移动Google云端存储中的文件?

方案是我们希望Python将A桶中的读取文件移动到B桶.我知道gsutil可以做到这一点,但不确定Python是否可以支持.

谢谢.

dml*_*ee8 16

这是我在同一存储桶内的目录之间移动 blob 或移动到不同存储桶时使用的函数。

from google.cloud import storage
import os

os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="path_to_your_creds.json"

def mv_blob(bucket_name, blob_name, new_bucket_name, new_blob_name):
"""
Function for moving files between directories or buckets. it will use GCP's copy 
function then delete the blob from the old location.

inputs
-----
bucket_name: name of bucket
blob_name: str, name of file 
    ex. 'data/some_location/file_name'
new_bucket_name: name of bucket (can be same as original if we're just moving around directories)
new_blob_name: str, name of file in new directory in target bucket 
    ex. 'data/destination/file_name'
"""
storage_client = storage.Client()
source_bucket = storage_client.get_bucket(bucket_name)
source_blob = source_bucket.blob(blob_name)
destination_bucket = storage_client.get_bucket(new_bucket_name)

# copy to new destination
new_blob = source_bucket.copy_blob(
    source_blob, destination_bucket, new_blob_name)
# delete in old destination
source_blob.delete()

print(f'File moved from {source_blob} to {new_blob_name}')
Run Code Online (Sandbox Code Playgroud)


jte*_*ace 4

使用google-api-python-client , storage.objects.copy页面上有一个示例。复制后,您可以使用storage.objects.delete删除源。

destination_object_resource = {}
req = client.objects().copy(
        sourceBucket=bucket1,
        sourceObject=old_object,
        destinationBucket=bucket2,
        destinationObject=new_object,
        body=destination_object_resource)
resp = req.execute()
print json.dumps(resp, indent=2)

client.objects().delete(
        bucket=bucket1,
        object=old_object).execute()
Run Code Online (Sandbox Code Playgroud)

  • 你能告诉你为上面的代码导入哪个包吗? (2认同)