找回密码
 会员注册
查看: 39|回复: 0

boto3:Python连接S3对象存储并进行文件操作(上传、下载、删除)

[复制链接]

5

主题

0

回帖

16

积分

新手上路

积分
16
发表于 2024-9-3 11:02:09 | 显示全部楼层 |阅读模式
目录一、前言二、boto3三、代码1、连接2、列出桶中文件3、删除文件4、上传下载一、前言   在日常进行数据高可用时,会将数据存入对象存储中。在一般的企业中,对象存储资源池只有管理员拥有Web界面管理,普通账号需要对数据进行管理时,有如下方法:   一、通用对象存储管理客户端,如对于S3对象存储有S3browser可以进行使用,其优点是操作简单,界面可视化;缺点是每次需要手动操作。   二、利用对象存储指定的API或者SDK工具进行开发,其优点是适合无法使用可视化界面的IT环境和可自动完成,缺点是需要自己编辑。二、boto3    boto3是针对S3云存储的PythonSDK工具,是boto2的迭代版本,对于可使用S3对象存储接口协议的基本可使用boto3。安装:pipinstallboto3三、代码1、连接importboto3fromdatetimeimportdatetime,timedelta#定义endpoint、accesskey和secretkeyendpoint_url='http://*************'access_key='****'secret_key='****'#创建S3客户端实例并指定endpoint和凭证信息s3=boto3.client('s3',endpoint_url=endpoint_url,aws_access_key_id=access_key,aws_secret_access_key=secret_key,verify=False)#如果不需要SSL验证,可以设置verify=False,即http或者https#列出所有的桶responses=s3.list_buckets()buckets=[bucket['Name']forbucketinresponses['Buckets']]print('AllofBuckets:',buckets)2、列出桶中文件#前面连接桶的代码段此处已省略response=s3.list_objects_v2(Bucket='****')#选择你需要列出的桶名,#输出列出的所有对象if'Contents'inresponse:forobjinresponse['Contents']:key=obj['Key']timestep=obj['LastModified']#文件对应的最后更改时间print(key,timestep)#输出桶中文件名及最后更改时间3、删除文件删除文件:s3.delete_object(Bucket='****',Key='****')Bucket即为桶名,Key为桶中要删除的文件名(包含完整路径)#以删除桶中30天以前的文件来直观了解一下#省略前面连接代码response=s3.list_objects_v2(Bucket='****')days_hup=30del_date=datetime.now()-timedelta(days=days_hup)#print(del_date)#删除30天以前的文件if'Contents'inresponse:forobjinresponse['Contents']:key=obj['Key']timestep=obj['LastModified']timestep=timestep.replace(tzinfo=None)#注意进行时间offset-aware和offset-naive的转换iftimestep
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-13 17:42 , Processed in 2.916122 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表