使用 AWS boto3 库从 s3 桶中批量下载数据
文章目录
- 一、Boto3 快速安装
- 二、账户配置
- 三、代码示例
- 3.1 下载单个文件
- 3.2 下载文件夹内全部文件
官方文档
一、Boto3 快速安装
安装 Boto3 之前,先安装 Python 3.8 或更高版本;对 Python 3.6 及更早版本的支持已弃用。
通过 pip 安装最新的 Boto3 版本:
pip install boto3
使用 AWS Common Runtime (CRT)
除了默认安装 Boto3 之外,还可以选择包含新的 CRT。AWS CRT 是模块化包的集合,充当 AWS 开发工具包的新基础。每个库都为其实现的功能区域提供更好的性能和最小的占用空间。使用 CRT,开发工具包可以在可能的情况下共享相同的基本代码,从而提高 AWS 开发工具包之间的一致性和吞吐量优化。
但是,Boto3 默认情况下不使用 AWS CRT,但可以通过在安装 Boto3 时指定 crt 额外功能来选择使用它:
pip install boto3[crt]
要恢复到 Boto3 的非 CRT 版本,使用以下命令:
pip uninstall awscrt
如果需要重新启用 CRT,重新安装 boto3[crt] 以确保获得兼容版本 awscrt。
二、账户配置
- 在代码中配置账户信息:
s3 = boto3.resource('s3', aws_access_key_id="", aws_secret_access_key="")
# s3 = boto3.client('s3', aws_access_key_id="", aws_secret_access_key="")
- 在电脑配置文件中配置账户信息(提前安装 AWS CLI):
- 可以使用
aws configure命令来修改配置文件; - 可以直接修改配置文件,默认情况下,配置文件的位置为
~/.aws/credentials。配置文件至少应该指定aws_access_key_id和aws_secret_access_key。
- 可以使用
三、代码示例
3.1 下载单个文件
import boto3# 配置S3连接
s3 = boto3.resource('s3')
bucket_name = 'your-bucket-name'# 定义要下载的文件名
file_key = 'your-file-path-in-s3'# 下载文件
s3.Bucket(bucket_name).download_file(file_key, 'local-file-path')
3.2 下载文件夹内全部文件
def download_folder(bucket_name, folder, local_dir=None):"""Download an object from an S3 bucket"""count = 0bucket = s3.Bucket(bucket_name)for obj in bucket.objects.filter(Prefix=folder):target = obj.key #if local_dir is None else os.path.join(local_dir, os.path.relpath(obj.key, folder))if not os.path.exists(os.path.dirname(os.path.dirname(target))):os.makedirs(os.path.dirname(os.path.dirname(target)))# 额外下载文件夹中文件夹内的 object#if obj.key[-1] == '/':# continuetarget_path = os.path.join(os.path.dirname(os.path.dirname(target)), target.split('/')[-1])bucket.download_file(obj.key, target_path)count += 1print("cont: ", count)
相关文章:
使用 AWS boto3 库从 s3 桶中批量下载数据
文章目录 一、Boto3 快速安装二、账户配置三、代码示例3.1 下载单个文件3.2 下载文件夹内全部文件 官方文档 一、Boto3 快速安装 安装 Boto3 之前,先安装 Python 3.8 或更高版本;对 Python 3.6 及更早版本的支持已弃用。 通过 pip 安装最新的 Boto3 版…...
js ::after简单实战
::after的作用是在元素后面再加个XXX样式 工作中遇到了一个表格,鼠标指到单元格要有个整行编辑态的效果,下面写个简单的demo 有人可能会说了,直接修改某个单元格的hover样式不就行了嘛,问题是如果鼠标指到单元格和单元格直接的…...
数据结构与算法实验(黑龙江大学)
实验一 顺序存储的线性表(2 学时) 一、实验目的 1 、掌握线性表的逻辑结构特征。 2、熟练掌握线性表的顺序存储结构的描述方法。 3 、熟练掌握顺序表上各种基本操作的实现。 二、实验内容 1 、设线性表的数据元素都为整数,存放在顺序表…...
如何使用rclone将腾讯云COS桶中的数据同步到华为云OBS
在多云策略与数据迁移趋势下,企业往往需要将数据在不同云服务提供商之间进行迁移。本文介绍如何使用rclone工具同步腾讯云COS(Cloud Object Storage)桶中的数据到华为云OBS(Object Storage Service)。先决条件是您已经…...
gitlab
Gitlab 安装git yum安装 [rootgit ~]# yum -y install git编译安装 Git官网 #安装依赖关系 [rootgit ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel autoconf gcc perl-ExtUtils-MakeMaker # 编译安装 [rootgit ~]# tar -zxf git-2.0…...
3.计算机网络
1.重点概念 MSL(Maximum segment lifetime):TCP 报⽂最⼤⽣存时间。它是任何 TCP 报⽂在⽹络上存在的 最⻓时间,超过这个时间报⽂将被丢弃。实际应⽤中常⽤的设置是 30 秒,1 分钟和 2 分钟。 TTL(Time to …...
Doris表的动态分区
动态分区是在Doris 0.12版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。动态分区只支持Range分区。 1 原理 在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任务,这时…...
docker小技能:部署mysql
文章目录 引言I Docker安装MySQL1.1 安装mysql1.2 配置容器自动重启参数1.3 查看版本II 配置MySQL2.1 设置为开机自启动2.2 执行MySQL安全性操作并设置密码2.3 配置文件2.4 创建数据库用户dmsTest,并授予远程连接权限。2.5 用户相关命令III 用户权限3.1 权限层级3.2 权限分类3.…...
“AI在未来”公益计划,亚马逊云科技将教育资源带到更多中西部学校
亚马逊云科技宣布携手中国光华科技基金会启动“AI在未来”公益计划2023至2024学年项目,预计本学年内在内蒙古、江西、湖南和广西四个省份开展该项目,并完成三年内为中西部地区一百所学校的一万名学生提供免费人工智能教育资源及实践机会的目标。 此外&am…...
MyBatis的xml实现
1.下载插件MyBatisX 2.添加依赖 <!--Mybatis 依赖包--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency><!--…...
dolphinscheduler任务莫名重跑
dolphinscheduler运行了一段时间,忽然发现一个流程下某个任务一直在自动重跑,把工作流删了,任务删了,下线等等,都不能阻止他重复的运行,每秒1次,真是见了鬼 1、把zookeeper停掉发现不再重跑了 …...
Caché for UNIX®, Linux及macOS的安装及配置
本文介绍在UNIX、Linux或macOS系统上安装Cach的操作步骤。本文假设用户已熟悉UNIX、Linux和macOS目录结构、实用程序和命令。 本文包含如下主要部分: 1)Cach安装。 2)无人值守的Cach安装。 3)安装后任务。...
【书籍篇】Git 学习指南(一)基础概念及入门
Git 学习指南(一)基础概念及入门 一. 基本概念1.1 分布式版本控制1.1.1 集中式版本控制系统1.1.2 分布式版本控制系统1.1.3 特型版本库 1.2 版本库,分布式工作的基础所在1.2.1 散列值 1.3 分支的创建与合并1.3.1 分支的其他操作 二. 入门2.1 …...
JWT知识点
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提…...
UDP接收报文函数recvfrom和UDP发送报文函数sendto
#include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen); sockfd、buff 和 nbytes 是前三个参数。sockfd 是本地创建的套接字描述符,buff 指向本地的缓存,nbyt…...
Redisson 分布式锁实战应用解析
文章目录 前言一、Redisson介绍二、Redisson的使用1.1 引入依赖1.2 编写配置1.3 示例测试_011.4 示例测试_02 三、Redisson源码分析2.1 加锁源码2.2 看门狗机制 前言 分布式锁主要是解决分布式系统下数据一致性的问题。在单机的环境下,应用是在同一进程下的&#x…...
【机器学习】对比学习(contrastive learning)
对比学习是一种机器学习技术,算法学习区分相似和不相似的数据点。对比学习的目标是学习数据的表示,以捕捉不同数据点之间的基本结构和关系。 在对比学习中,算法被训练最大化相似数据点之间的相似度,并最小化不相似数据点之间的相似…...
开源和闭源的优劣势比较
开源与闭源软件之争一直是技术领域一个备受关注的话题,而在近期特斯拉CEO马斯克的表态中,关于开源的讨论更是引发了广泛的关注。以下是一些关于开源和闭源的优劣势以及对未来大模型发展的一些见解: 开源软件的优势: 创新与合作&a…...
html手势密码解锁插件(附源码)
文章目录 1.设计来源1.1 界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/134534785 html手势密码解锁插件(附源码),仿手机手势密码,拖动九…...
SpecVibe项目复盘:基于规格驱动与智能体技能框架的AI辅助开发实践
1. 项目概述与核心价值最近在整理过往的代码仓库时,我重新审视了“SpecVibe”这个项目。它是我在2022年10月至2023年1月期间,参与一个名为“Lithium”的后端开发训练营时完成的核心作业。这个项目远不止是一份简单的作业提交,它是我个人对于“…...
Review Gate V2:基于MCP协议的多模态AI编程助手深度集成方案
1. 项目概述:从“单次对话”到“深度协作”的AI工作流革命如果你和我一样,是Cursor IDE的重度用户,那你一定对那个每月500次请求的限制又爱又恨。爱的是,它背后的Claude模型能力确实强大;恨的是,面对一个复…...
RTX4060Ti到手后,我如何在Windows上一步步配好PyTorch+UNet环境(附完整依赖清单)
RTX4060Ti到手后,我如何在Windows上一步步配好PyTorchUNet环境(附完整依赖清单) 刚拆开RTX4060Ti的包装时,那种兴奋感就像拿到新玩具的孩子。但很快我就意识到,要让这块显卡真正发挥价值,得先搞定深度学习…...
DeerFlow:字节跳动开源的 Super Agent 框架,从入门到上手完全指南
官网 https://deerflow.tech/ 架构演示 目录 引言 一、DeerFlow 到底是什么? 二、为什么 DeerFlow 值得关注? 2.1 字节跳动的工程底蕴 2.2 真正隔离执行——Docker 沙箱是安全护城河 2.3 V2 彻底重写:团队追求"做对"而非&quo…...
3步解锁Windows原生HEIC预览:告别格式转换的终极方案
3步解锁Windows原生HEIC预览:告别格式转换的终极方案 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 你是否曾经在Wi…...
构建高效RTL到GDS标准化流程:提升芯片设计成功率与团队协作
1. 为什么我们需要一个从RTL到GDS的标准化流程?在芯片设计这个行当里干了十几年,我见过太多才华横溢的工程师在项目后期焦头烂额。他们可能用Verilog写出了一段极其精妙的RTL代码,仿真结果完美无瑕,但一到后端物理实现阶段&#x…...
GEO优化深度指南:从行业源头到商业落地,如何为企服与创业者构建AI搜索护城河
在AI搜索浪潮席卷全球的当下,一个名为“GEO”(生成式引擎优化)的新兴赛道正以前所未有的速度重塑企业获客与品牌曝光的逻辑。对于创业者、企服从业者及互联网广告人而言,这既是颠覆性的挑战,也蕴藏着巨大的商业机遇。本…...
C# WinForm项目实战:用OpenCvSharp 4.x打造一个带十字准星和ROI的简易摄像头工具
C# WinForm实战:基于OpenCvSharp的智能摄像头标注工具开发指南 在工业检测、生物显微或工程测量领域,经常需要对实时视频流进行精确标注和分析。传统商业软件往往价格昂贵且扩展性有限,而利用C# WinForm配合OpenCvSharp库,开发者可…...
如何利用ChatPaper自动识别研究论文核心章节:3步掌握AI论文结构分析功能
如何利用ChatPaper自动识别研究论文核心章节:3步掌握AI论文结构分析功能 【免费下载链接】ChatPaper Use ChatGPT to summarize the arXiv papers. 全流程加速科研,利用chatgpt进行论文全文总结专业翻译润色审稿审稿回复 项目地址: https://gitcode.co…...
跳出舒适圈:让你快速变强的 25 个关键认知
华为前副总裁在离职信中写道:“我印象里没有做过什么大事,只是把眼前的事情做好,然后再做下一件事情,事情做的多了,也就成大事了。” 所谓强者,从不是天生自带光环,而是在日复一日的选择与行动中…...
