cfg = self.cfg
#用Minio获取s3服务器client,查看桶(存放文件的文件夹cfg['bucket'])是否存在。
client = Minio(cfg['endpoint'],
               access_key=cfg["access_key"],
               secret_key=cfg["secret_key"])
found = client.bucket_exists(cfg['bucket'])
if found:
 #用boto3创建获取s3服务器的反应(参数为地址和密码,参考S3 — Boto3 Docs 1.23.3 documentation)
    s3 = boto3.resource(
        's3',
        endpoint_url=f'{"https" if cfg["ssl"] else "http"}://{cfg["endpoint"]}',
        aws_access_key_id=cfg["access_key"],
        aws_secret_access_key=cfg["secret_key"]
    )
    self.s3 = s3

#获取桶,获取客户端
self.my_bucket = s3.Bucket(cfg['bucket'])
self.boto_client = boto3.client('s3',endpoint_url=f'{"https" if cfg["ssl"] else "http"}://{cfg["endpoint"]}',
    aws_access_key_id=cfg["access_key"],
    aws_secret_access_key=cfg["secret_key"])

#过滤是cfg['file_dictory'] 文件夹中的文件,每个文件是一个对象
#cfg['file_dictory'] = ‘file’
#object_summary.key是文件对象的路径 例如:file/334413350/NWP/SFAF06_20220510_0000_NWP.WPD
for object_summary in self.my_bucket.objects.filter(Prefix=cfg['file_dictory']):
    if '.' in str(object_summary.key): 
        self.files_path_list.append(object_summary.key)
#读取文件中内容
obj = self.s3.Object(self.cfg['bucket'], file_path_name)
body = obj.get()['Body'].read()
f_charInfo = chardet.detect(body)  # 获取文本编码信息  #'GB2312'
o_data = body.decode(f_charInfo['encoding'])

######移动文件。没有找到可以直接移动文件的接口,只能执行复制再删除。

#复制文件到另一个地方

old_source = {'Bucket':self.cfg['bucket'], 'Key': self.file_path_name} #被复制的文件地址信息

new_key = self.file_path_name.replace(self.cfg['file_dictory'], self.cfg['file_dictory_uploaded'])#移动到的地址路径

self.my_bucket.copy(old_source, new_key)

#删除原来文件

self.boto_client.delete_object(Bucket=self.cfg['bucket'], Key=self.file_path_name)