সমস্যা বিবৃতি − S3 থেকে ফাইলগুলির একটি তালিকা পেতে পাইথনে boto3 লাইব্রেরি ব্যবহার করুন, সেগুলি একটি নির্দিষ্ট তারিখের টাইমস্ট্যাম্পের পরে সংশোধন করা হয়৷
উদাহরণ − 2021-01-21 13:19:56.986445+00:00 এর পরে পরিবর্তন করা হলে S3-এর Bucket_1/testfolder থেকে 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 AWS ফরম্যাটে s3://bucket_name/key হিসাবে পাস করা হয়েছে।
পদক্ষেপ 4৷ - boto3 লাইব্রেরি ব্যবহার করে একটি AWS সেশন তৈরি করুন।
ধাপ 5 - S3 এর জন্য একটি AWS রিসোর্স তৈরি করুন।
ধাপ 6 - এখন ফাংশন list_objects ব্যবহার করে প্রদত্ত উপসর্গের সমস্ত অবজেক্ট তালিকাভুক্ত করুন এবং ব্যতিক্রমগুলি পরিচালনা করুন, যদি থাকে।
পদক্ষেপ 7 − উপরের ফাংশনের ফলাফল হল একটি অভিধান এবং এতে 'বিষয়বস্তু' নামে একটি কী-তে ফাইল-স্তরের সমস্ত তথ্য রয়েছে। এখন একটি বস্তুর মধ্যে বালতি-স্তরের বিবরণ বের করুন।
ধাপ 8 − এখন, অবজেক্ট একটি ফাইলের সমস্ত বিবরণ সহ একটি অভিধান। এখন, LastModified আনুন প্রতিটি ফাইলের বিশদ বিবরণ এবং প্রদত্ত তারিখের টাইমস্ট্যাম্পের সাথে তুলনা করুন।
ধাপ 9 − যদি শেষ সংশোধন করা হয় প্রদত্ত টাইমস্ট্যাম্পের চেয়ে বড়, সম্পূর্ণ ফাইলের নাম সংরক্ষণ করুন, অন্যথায় এটি উপেক্ষা করুন৷
পদক্ষেপ 10 − প্রদত্ত তারিখের টাইমস্ট্যাম্পের পরে পরিবর্তিত ফাইলগুলির তালিকা ফেরত দিন৷
৷উদাহরণ
নিম্নলিখিত কোডটি শেষ পরিবর্তিত তারিখের টাইমস্ট্যাম্পের উপর ভিত্তি করে AWS S3 থেকে ফাইলগুলির তালিকা পায় -
boto3from botocore.exceptions import ClientErrordef list_all_objects_based_on_last_modified(s3_files_path,last_modified_timestamp):যদি s3_files_path-এ 's3://' না থাকে:ব্যতিক্রম বাড়ান('প্রদত্ত পাথ' একটি bo3 paths =S val3ses) সেশন নয়। () s3_resource =session.resource('s3') bucket_token =s3_files_path.split('/') bucket =bucket_token[2] folder_path =bucket_token[3:] উপসর্গ ="" ফোল্ডার_পথে পাথের জন্য:উপসর্গ =উপসর্গ + পাথ + '/' চেষ্টা করুন:result =s3_resource.meta.client.list_objects(Bucket=bucket, Prefix=prefix) ব্যতীত ClientError যেমন e:raise Exception( "boto3 ক্লায়েন্ট এরর in list_all_objects_based_on_last_modified function:" + e.__str__()) ব্যতিক্রম ছাড়া e:raise Exception( "s3 সাহায্যকারীর list_all_objects_based_on_last_modifiedfunction-এ অপ্রত্যাশিত ত্রুটি:" + e.__str__()) filtered_file_names =[] ফলাফলে অবজেক্টের জন্য ['Contents']:যদি str(obj["LastModified">(str=)) last_modified_timestamp):fu ll_s3_file ="s3://" + bucket + "/" + obj["Key"] filtered_file_names.append(full_s3_file) রিটার্ন filtered_file_names# পরীক্ষার জন্য একটি টাইমস্ট্যাম্প দিন। , "2021-01-21 13:19:56.986445+00:00"))#একটি টাইমস্ট্যাম্প দিন সেই প্রিন্টের পরে কোনো ফাইল পরিবর্তিত হয় না(list_all_objects_based_on_last_modified("s3://Bucket_1/testfolder" , "1-321) 19:56.986445+00:00"))
আউটপুট
# test.zip আনার জন্য একটি টাইমস্ট্যাম্প দিন