मेरे पास नीचे क्लाउड फ़ंक्शन है जो एक ही प्रोजेक्ट में फ़ाइलों को एक बाल्टी से दूसरे में कॉपी करता है और ठीक काम कर रहा है। मुझे गंतव्य बकेट में फ़ाइलों में एक टाइमस्टैम्प जोड़ने की आवश्यकता है ताकि वे अगली बार अधिलेखित न हों।

from google.cloud import storage, bigquery

def archive(event, context):
   
        source_bucket_name = event['bucket']
        blob_name = event['name']
       
        # Initiate Cloud Storage client
        storage_client = storage.Client()
       
        bucketName = 'test_vs'

        # Define the origin bucket
        origin = storage_client.bucket(bucketName)
        
        # Define the destination bucket
        destination = storage_client.bucket('test_vs_archive')

        # Get the list of the blobs located inside the bucket which files you want to copy
        blobs = storage_client.list_blobs(bucketName)

        for blob in blobs:
            
            origin.copy_blob(blob, destination)

        return "Done!"
0
Sin 3 सितंबर 2020, 11:04

1 उत्तर

सबसे बढ़िया उत्तर

आप एपीआई के लिए यह दस्तावेज़ पढ़ सकते हैं

copy_blob (बूँद, गंतव्य_बकेट, नया_नाम = कोई नहीं, ....)

पैरामीटर:

  • new_name (str) - (वैकल्पिक) कॉपी की गई फ़ाइल का नया नाम।

तो आपको बस स्लोव में पैरामीटर्स "new_name" जोड़ने की जरूरत है:

from google.cloud import storage, bigquery
from datetime import datetime

def archive(event, context):
   
        source_bucket_name = event['bucket']
        blob_name = event['name']
       
        # Initiate Cloud Storage client
        storage_client = storage.Client()
       
        bucketName = 'test_vs'

        # Define the origin bucket
        origin = storage_client.bucket(bucketName)
        
        # Define the destination bucket
        destination = storage_client.bucket('test_vs_archive')

        # Get the list of the blobs located inside the bucket which files you want to copy
        blobs = storage_client.list_blobs(bucketName)
        
        # Get datetime
        dt = datetime.today().strftime("%Y-%m-%d")
        
        for blob in blobs:
            n_name = f'{blob.name}_{dt}' # use fstring
            origin.copy_blob(blob, destination, new_name=n_name)

        return "Done!"
2
EEEEH 3 सितंबर 2020, 11:20