使用文件夹结构迭代 S3 存储桶中的文件

2024-04-04

我有一个 S3 存储桶。在存储桶内,我们有一个 2018 年的文件夹,以及我们每个月和每天收集的一些文件。例如,2018\3\24、2018\3\25 等等。

我们没有将日期放入每天存储桶内的文件中。

基本上,我想遍历存储桶并使用文件夹结构按“日期”对每个文件进行分类,因为我们需要将其加载到不同的数据库中并且需要一种识别方法。

我读过大量关于使用 boto3 的帖子,并进行了迭代,但是关于是否可以完成我需要的事情似乎存在冲突的细节。

如果有更简单的方法,请建议。

我已经接近了 导入boto3

s3client = boto3.client('s3')
bucket = 'bucketname'
startAfter = '2018'

s3objects= s3client.list_objects_v2(Bucket=bucket, StartAfter=startAfter )
for object in s3objects['Contents']:
    print(object['Key'])

使用 boto3 时,每个请求只能列出 1000 个对象。所以要获取bucket中的所有对象,可以使用s3的分页器 http://boto3.readthedocs.io/en/latest/reference/services/s3.html#paginators.

client.get_paginator('list_objects_v2')就是你所需要的。

您需要这样的东西:

import boto3
client = boto3.client('s3')
paginator = client.get_paginator('list_objects_v2')
result = paginator.paginate(Bucket='bucketname',StartAfter='2018')
for page in result:
    if "Contents" in page:
        for key in page[ "Contents" ]:
            keyString = key[ "Key" ]
            print keyString

From this http://boto3.readthedocs.io/en/latest/reference/services/s3.html#S3.Client.list_objects_v2文档:

列表对象:

返回存储桶中的部分或全部(最多 1000 个)对象。你可以 使用请求参数作为选择标准返回子集 桶中的物体。

列表对象_v2:

返回存储桶中的部分或全部(最多 1000 个)对象。你可以 使用请求参数作为选择标准返回子集 桶中的物体。注:ListObjectsV2是修改后的List 对象 API,我们建议您使用此修订版 API 来创建新的 应用程序开发。

From this https://stackoverflow.com/a/37539994/6632342 answer:

list_objects_v2添加了功能。由于每页列出 1000 个键的限制,使用 列出多个页面的标记可能会让人头疼。从逻辑上讲,你需要 跟踪您成功处理的最后一个密钥。和ContinuationToken,你不需要知道最后一个键,你只需检查 的存在NextContinuationToken在回应中。你可以产卵 并行处理 1000 个键的多个而不需要处理 用最后一个键来获取下一页。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用文件夹结构迭代 S3 存储桶中的文件 的相关文章

  • 设置 Pyenv 的路径

    我正在尝试在我的服务器中设置 Pyenv 的加载路径 bashrc file 我正在关注这个tutorial https realpython com intro to pyenv 它要求我们在哪里设置pyenv到加载路径 然而 在我的 b
  • AWS EC2 应用程序负载均衡器 + 双向 SSL?

    是否可以使用 AWS Application Load Balancer 并使用双向 ssl 客户端证书 我当前的设置使用经典的 ELB 通过 tcp 转发到 Web 服务器端点来支持此操作 我现在需要使用 URL 路由流量 并希望在可能的
  • Django Web 应用程序中的 SMTP 问题

    我被要求向使用 Django Python 框架实现的现有程序添加一个功能 此功能将允许用户单击一个按钮 该按钮将显示一个小对话框 表单以输入值 我确实编写了一些代码 显示电子邮件已发送的消息 但实际上 它没有发送 My code from
  • 如果 pandas 数据框中的所有列都有空字符串,则删除行

    我有一个数据框如下 Name Age 0 Tom 20 1 nick 21 2 3 krish 19 4 jack 18 5 6 jill 26 7 nick 期望的输出是 Name Age 0 Tom 20 1 nick 21 3 kri
  • 使用 Tabula 通过 Python 读取 pdf 时出现 Java 错误

    我已经安装了 tabula 库 用于使用 python 将 pdf 读取到 pandas 数据框中 但是当我运行代码时 import tabula df tabula read pdf sample1 pdf pages 1 我得到了例外
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 将两个反斜杠替换为一个反斜杠

    我想用单个反斜杠替换带有两个反斜杠的字符串 但是 替换似乎不接受 作为替换字符串 这是解释器的输出 gt gt gt import tempfile gt gt gt temp folder tempfile gettempdir gt g
  • 如果文件为空,如何跳过文件行

    python 3中的程序 这是我的第一个涉及文件的程序 我需要忽略注释行 以 开头 和空行 然后拆分这些行 以便它们可迭代 但我不断收到 IndexError 消息 指出字符串索引超出范围 并且程序在空行处崩溃 import os path
  • ssl.SSLEOFError: EOF 发生违反协议 (_ssl.c:1129)

    我正在尝试使用 GOOGLE Drive Api 从电脑上传多个文件到云端硬盘 from pydrive auth import GoogleAuth from pydrive drive import GoogleDrive import
  • 从 Amazon S3 存储桶下载文件的脚本

    尝试编写脚本以从 Amazon S3 存储桶下载文件 cURL 网站上的示例遇到问题 下面的脚本产生 我们计算的请求签名与您的签名不匹配 假如 检查您的密钥和签名方法 感谢任何帮助 bin sh file filename php buck
  • 如何使用 matplotlib 在误差条图的尖端显示水平线?

    我可以使用下面的代码生成误差条图 代码生成的图表显示了代表错误的垂直线y 我希望在这些错误的尖端有水平线 误差线 但我不知道该怎么做 import numpy as np import matplotlib pyplot as plt x
  • 带有空格的 Firestore 文档字段名称在 Python 中与 .where() 一起使用时会返回错误

    使用 Firebase 的 Cloud Firestore 在 Python 3 7 中编写一个非常简单的程序 在程序中 我使用 where 下拉集合的一部分 然后使用 for 循环对其进行迭代 当任何带有空格的字段名称被传递到 where
  • 如何在单元测试中模拟 subprocess.call

    我使用的是 python 3 3 我必须测试一个使用的方法call来自 subprocess py I tried subprocess call MagicMock with patch subprocess call as TU cal
  • 更改QLineEdit的ClearButton图标

    我想在Windows 10 1909 64位 上的Python 3 8和PyQt5 5 15 0 上更改我的QLineEdit的ClearButton图标 稍后我想在Linux上运行代码 我尝试应用此处找到的代码 如何在 QLineEdit
  • Python 2 的 `exceptions` 模块在 Python3 中丢失了,它的内容到哪里去了?

    一位朋友提到 对于 Python 2 假设您在命令行上的路径环境变量中有它 pydoc exceptions 非常有用 知道它应该可以为他每周节省几分钟的网络查找时间 我自己每周都会用谷歌搜索一次例外层次结构 所以这对我来说也是一个有用的提
  • 如何使用 PyCharm 运行 Pylint

    我想将 Pylint 配置为我正在处理的 Python 项目的整个项目目录中的外部工具 我尝试将存储库用作模块 init py没有的话 这两种方式都不起作用 我在设置 Pylint 与 PyCharm 一起运行时遇到困难 我知道我应该将它作
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • 如何使用 BeautifulSoup 从表中选择特定行?

    So I have a question related to a previous question but I realized I needed to go one level more to get an 11 digit NDC
  • 异常:加载数据时 URL 获取失败

    我正在尝试设置我的机器来运行 Tensorflow 2 我从未使用过 Tensorflow 只是下载了 Python 3 7 我不确定这是否是我的机器的问题 我按照上面列出的安装说明进行操作TensorFlow 的网站 https www
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru

随机推荐

  • 如何将位于 HDFS 上的类型安全配置文件添加到 Spark-Submit(集群模式)?

    我有一个 Spark Spark 1 5 2 应用程序 它将数据从 Kafka 流式传输到 HDFS 我的应用程序包含两个 Typesafe 配置文件来配置某些内容 例如 Kafka 主题等 现在我想在集群中使用spark submit 集
  • 使用 Nextjs-13 + Supabase 时无法解决“编码”模块错误

    我正在尝试使用 Supabase 从我的表单插入 收集数据 但是当我编译时 出现编码模块未找到错误 我已经尝试过缓存清理和重新安装 npm 模块 他们也没有工作 项目结构 apply page tsx 代码 use client impor
  • 在使用“文本”属性规范化文件后,如何强制 git 检出主分支并删除回车符?

    好的 所以我添加了文件 gitattributes像这样的线条 css text js text etc 然后我按照以下说明进行操作http git scm com docs gitattributes checking out and c
  • regExp 用于匹配目录

    我有一个有点复杂的 NetCDF 文件目录结构 我想为其创建 THREDDS 目录 data buoy A0121 realtime A0121 met realtime nc A0121 waves realtime nc etc dat
  • 如何在本地系统中自动复制全局?

    考虑一下 我有一个全局 TEST 并且我想自动在 TEST2 中复制 拥有相同的副本 TEST 上的每个操作集或终止都应自动反映在 TEST2 上 确保这可以 100 可靠地发生的唯一方法是创建一个日志过滤器 它监视 TEST 的更改 然后
  • 如何在 SQL Server 触发器中复制插入、更新、删除的行

    如果用户更改表HelloWorlds 然后我想要 他们所做的操作 他们执行操作的时间 并将原始行的副本插入到HelloWorldsHistory 由于列长度 我希望避免单独触发插入 更新和删除操作 我试过这个 create trigger
  • Docker swarm 尝试解析我的 compose 文件中 ENV 变量的值(因为它有一个 go 模板)并给我一个错误

    错误 我尝试启动一个 logspout 容器并通过 docker compose 文件设置日志格式 ENV 变量 不太难 如果我启动它docker compose up 一切正常 但是当我尝试用 docker 启动它时swarm init
  • 让 .htaccess RewriteRule 重定向到“当前目录中”的脚本(而不是显式路径)

    我在 htaccess 中使用 RewriteRule 进行重定向anything这不是一个现有文件 到一个 cms php 文件 该文件动态处理任何请求 或输出一些错误消息 如果适用 这是我在 htaccess 中执行的操作 Rewrit
  • pyspark:系统找不到指定的路径

    我刚刚使用conda安装了pyspark 2 2 0 在windows 7 64位上使用python v3 6 java v1 8 conda install pyspark 它下载并似乎安装正确 没有错误 现在当我跑步时pyspark在命
  • 在 C 中从字符串转换为枚举

    有没有一种方便的方法来获取字符串 由用户输入 并将其转换为枚举值 在这种情况下 字符串将是枚举值的名称 如下所示 enum Day Sunday 0 Monday 1 这样 如果用户给出一天的名称 它就能够将其解析为相应的枚举值 诀窍是 我
  • 从 Excel/VBA 中的链接自动下载图片的方法是什么?

    情况是这样的 我正在尝试从外部服务器下载一些图片到我的本地计算机上 Excel 文件有一个图片链接 可以打开并下载图片 到目前为止我所尝试的是将超链接转换为文本 图片网址 并运行以下代码 我只是基本熟悉VBA 但对其他语言更熟悉 这是我到目
  • 如何在运行时以编程方式将选项卡添加到表单?

    我用谷歌搜索了这个 但仍然无法让它工作 我知道如何使用工具箱添加选项卡 我还阅读了如何以编程方式执行此操作 但我仍然不明白 MSVC Express 2010 我有一个简单的项目设置 只是一个带有 TabControl 的 Windows
  • 在Datagridview中显示子对象的属性

    如何在 datagridview 中显示对象的选定属性以及第一个对象的成员对象的选定属性 我认为我不会要求绑定 而是依赖硬编码更新 因为更新将在非 UI 线程上启动 而且我认为绑定不会那么容易 至少我在其他项目中遇到过问题 基本上我想了解有
  • 如何执行下一个按钮操作?

    我在显示下一个问题时在 下一步 按钮中遇到问题 在我第一次设置文本时 我得到了正确的问题并匹配了四个选项答案 我需要的是 我有一个 下一步 按钮 用于显示下一个问题和答案 当我单击 下一步 按钮时 我可以获得下一个问题的接下来的四个选项 但
  • 如何在 C# 中绘制面板?

    嘿 我需要在 C 中的面板上进行绘图 但没有将绘图代码放在 panel1 Paint 中 我该怎么做 顺便说一句 我正在使用 WinForms Update 我忘了说清楚 我不需要将绘图代码放在绘图处理程序中 因为我需要根据按钮的事件开始绘
  • 打印一个字符*

    我提前为这个愚蠢的问题道歉 这是我的结构定义 struct vcard char cnet char email char fname char lname char tel 我正在尝试使用函数 vcard show vcard c 打印此
  • 使用 gridSVG 和 ggplot2 v.0.9.0 进行交互式点标签

    我想以交互方式在 ggplot 中标记点 以便将鼠标悬停在点上会显示标签 我正在尝试调整给出的答案这个问题 https stackoverflow com questions 8972642 how do you relate ggplot
  • 贝叶斯评级

    avg num votes 18 Average number of votes in all products avg rating 3 7 Average rating for all products this num votes 6
  • 如何在 Highcharts 组织结构图中启用拖放功能?

    我需要设置一个 组织 类型的 Highcharts 图表 它应该支持相互拖放节点 以移动树内的节点 目前 我得到了一个 组织 图表 其中显示了所有需要的信息 我尝试使用Highcharts plotOptions series dragDr
  • 使用文件夹结构迭代 S3 存储桶中的文件

    我有一个 S3 存储桶 在存储桶内 我们有一个 2018 年的文件夹 以及我们每个月和每天收集的一些文件 例如 2018 3 24 2018 3 25 等等 我们没有将日期放入每天存储桶内的文件中 基本上 我想遍历存储桶并使用文件夹结构按