Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

AWS संसाधन का उपयोग करके अंतिम संशोधित तिथि के आधार पर S3 से फ़ाइलों की सूची प्राप्त करने के लिए पायथन में Boto3 पुस्तकालय का उपयोग कैसे करें?

समस्या का विवरण - S3 से फाइलों की सूची प्राप्त करने के लिए पायथन में boto3 लाइब्रेरी का उपयोग करें, जिन्हें एक निश्चित तिथि टाइमस्टैम्प के बाद संशोधित किया गया है।

उदाहरण - अगर 2021-01-21 13:19:56.986445+00:00 के बाद संशोधित किया गया है, तो S3 के बकेट_1/टेस्टफ़ोल्डर से test.zip की सूची बनाएं।

इस समस्या को हल करने के लिए दृष्टिकोण/एल्गोरिदम

चरण 1 - अपवादों को संभालने के लिए boto3 और botocore अपवाद आयात करें।

चरण 2 - s3_path और last_modified_timestamp फ़ंक्शन में दो पैरामीटर हैं list_all_objects_based_on_last_modified. "last_modified_timestamp" "2021-01-22 13:19:56.986445+00:00" प्रारूप में होना चाहिए। डिफ़ॉल्ट रूप से, boto3 भौगोलिक स्थिति पर ध्यान दिए बिना UTC समयक्षेत्र को समझता है।

चरण 3 - सत्यापित करें कि s3_path को s3://bucket_name/key के रूप में AWS प्रारूप में पारित किया गया है।

चरण 4 - boto3 लाइब्रेरी का उपयोग करके AWS सत्र बनाएं।

चरण 5 - S3 के लिए AWS संसाधन बनाएं।

चरण 6 - अब दिए गए उपसर्ग के सभी ऑब्जेक्ट्स को फ़ंक्शन list_objects का उपयोग करके सूचीबद्ध करें और अपवादों को संभालें, यदि कोई हो।

चरण 7 - उपरोक्त फ़ंक्शन का परिणाम एक शब्दकोश है और इसमें 'सामग्री' नामक कुंजी में सभी फ़ाइल-स्तरीय जानकारी शामिल है। अब किसी ऑब्जेक्ट में बकेट-लेवल विवरण निकालें।

चरण 8 - अब, ऑब्जेक्ट भी एक डिक्शनरी है जिसमें फ़ाइल के सभी विवरण होते हैं। अब, LastModified fetch लाएं प्रत्येक फ़ाइल का विवरण और दिए गए दिनांक टाइमस्टैम्प के साथ तुलना करें।

चरण 9 - अगर LastModified दिए गए टाइमस्टैम्प से बड़ा है, पूरा फ़ाइल नाम सहेजें, अन्यथा इसे अनदेखा करें।

चरण 10 - उन फाइलों की सूची लौटाएं जिन्हें दिए गए दिनांक टाइमस्टैम्प के बाद संशोधित किया गया है।

उदाहरण

निम्न कोड अंतिम संशोधित दिनांक टाइमस्टैम्प के आधार पर AWS S3 से फ़ाइलों की सूची प्राप्त करता है -

import boto3
from botocore.exceptions import ClientError

def list_all_objects_based_on_last_modified(s3_files_path,
last_modified_timestamp):
   if 's3://' not in s3_files_path:
      raise Exception('Given path is not a valid s3 path.')
   session = boto3.session.Session()
   s3_resource = session.resource('s3')
   bucket_token = s3_files_path.split('/')
   bucket = bucket_token[2]
   folder_path = bucket_token[3:]
   prefix = ""
   for path in folder_path:
      prefix = prefix + path + '/'
   try:
      result = s3_resource.meta.client.list_objects(Bucket=bucket, Prefix=prefix)
   except ClientError as e:
      raise Exception( "boto3 client error in list_all_objects_based_on_last_modified function: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in list_all_objects_based_on_last_modified
function of s3 helper: " + e.__str__())
   filtered_file_names = []
   for obj in result['Contents']:
      if str(obj["LastModified"]) >= str(last_modified_timestamp):
         full_s3_file = "s3://" + bucket + "/" + obj["Key"]
         filtered_file_names.append(full_s3_file)
      return filtered_file_names

#give a timestamp to fetch test.zip
print(list_all_objects_based_on_last_modified("s3://Bucket_1/testfolder" , "2021-01-21 13:19:56.986445+00:00"))
#give a timestamp no file is modified after that
print(list_all_objects_based_on_last_modified("s3://Bucket_1/testfolder" , "2021-01-21 13:19:56.986445+00:00"))

आउटपुट

#give a timestamp to fetch test.zip
[s3://Bucket_1/testfolder/test.zip]
#give a timestamp no file is modified after that
[]

  1. पायथन सूची का अंतिम तत्व कैसे प्राप्त करें

    इस ट्यूटोरियल में, हम सूची से अंतिम तत्व प्राप्त करने के विभिन्न तरीकों को देखने जा रहे हैं। आइए एक-एक करके देखते हैं। सूचकांक हम इंडेक्स का उपयोग करके सूची का अंतिम तत्व प्राप्त कर सकते हैं। और हम सूची की लंबाई से अंतिम तत्व का सूचकांक प्राप्त कर सकते हैं। आइए कोड देखें। उदाहरण # initializing the

  1. पायथन में किसी सूची का अंतिम तत्व कैसे प्राप्त करें?

    पायथन अनुक्रम, सूची वस्तु सहित अनुक्रमण की अनुमति देता है। सूची में किसी भी तत्व को शून्य आधारित सूचकांक का उपयोग करके पहुँचा जा सकता है। यदि सूचकांक एक ऋणात्मक संख्या है, तो सूचकांक की गिनती अंत से शुरू होती है। जैसा कि हम सूची में अंतिम तत्व चाहते हैं, -1 को अनुक्रमणिका के रूप में उपयोग करें। >

  1. पायथन डिक्शनरी से सभी मूल्यों की सूची कैसे प्राप्त करें?

    किसी शब्दकोश से सभी कुंजियों की सूची प्राप्त करने के लिए, आप बस dict.values() फ़ंक्शन का उपयोग कर सकते हैं। उदाहरण my_dict = {'name': 'TutorialsPoint', 'time': '15 years', 'location': 'India'} value_list = list(my_dict.values()) print(value_list) आउटप