Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでBoto3ライブラリを使用して、AWSリソースを使用してS3からオブジェクトを削除するにはどうすればよいですか?


この記事では、PythonのBoto3ライブラリを使用してS3からオブジェクトを削除する方法を説明します。

−S3のBucket_1/testfolderからtest.zipを削除します

この問題を解決するためのアプローチ/アルゴリズム

ステップ1 −例外を処理するためにboto3およびbotocore例外をインポートします。

ステップ2 −s3_files_pathは関数内のパラメーターです。

ステップ3 − s3_files_pathがAWS形式でs3://bucket_name/keyとして渡されていることを検証します。

ステップ4 −boto3ライブラリを使用してAWSセッションを作成します。

ステップ5 −S3用のAWSリソースを作成します。

ステップ6 − S3パスを分割し、操作を実行して、削除するルートバケット名とオブジェクトパスを分離します。

ステップ7 −ここで、関数 delete_objectを使用します バケット名とキーを渡して削除します。

ステップ8 −オブジェクトは、ファイルのすべての詳細を含む辞書でもあります。次に、 LastModifiedをフェッチします 各ファイルの詳細を確認し、指定された日付のタイムスタンプと比較します。

ステップ9 −ファイルの削除中に問題が発生した場合は、一般的な例外を処理します。

次のコードを使用して、S3からオブジェクトを削除します-

import boto3
from botocore.exceptions import ClientError

def delete_objects_from_s3(s3_files_path):
   if 's3://' not in s3_files_path:
      raise Exception('Given path is not a valid s3 path.')
   session = boto3.session.Session(profile_name='saml')
   s3_resource = session.resource('s3')
   s3_tokens = s3_files_path.split('/')
   bucket_name = s3_tokens[2]
   object_path = ""
   filename = s3_tokens[len(s3_tokens) - 1]
   print('bucket_name: ' + bucket_name)

   if len(s3_tokens) > 4:
      for tokn in range(3, len(s3_tokens) - 1):
         object_path += s3_tokens[tokn] + "/"
      object_path += filename
   else:
      object_path += filename
   print('object: ' + object_path)
   try:
      result = s3_resource.meta.client.delete_object(Bucket=bucket_name, Key=object_path)
   except ClientError as e:
      raise Exception( "boto3 client error in delete_objects_from_s3 function: " + e.__str__())
   except Exception as e:
      raise Exception( "Unexpected error in delete_objects_from_s3 function of s3 helper: " + e.__str__())

#delete test.zip
print(delete_objects_from_s3("s3://Bucket_1/testfolder/test.zip")

出力

bucket_name: Bucket_1
object: testfolder/test.zip

  1. Pythonを使用してファイルを削除するにはどうすればよいですか?

    osモジュールの関数を含む単一のファイルまたは単一の空のフォルダーを削除できます。たとえば、ファイルmy_file.txtを削除する場合は、 >>> import os >>> os.remove('my_file.txt') os.removeの引数は、絶対パスまたは相対パスである必要があります。

  2. Pythonを使用して文字列から文字を削除するにはどうすればよいですか?

    文字列から特定のインデックスの文字を削除する場合は、文字列スライスを使用して、その文字を含まない文字列を作成できます。たとえば、 >>> s = "Hello World" >>> s[:4] + s[5:] "Hell World" ただし、文字または文字のリストのすべての出現を削除する場合は、次の方法を使用できます。 文字列クラスには、文字列内のサブ文字列を置き換えるために使用できるメソッドreplaceがあります。このメソッドを使用して、削除する文字を空の文字列に置き換えることができます。例: >>