You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用boto3获取AWS S3指定文件的最后修改日期

问题解答

1、仅使用boto3的client和resource是否可以获取S3指定文件的最后修改日期?

可以实现,你的报错原因是boto3的Bucket对象不支持直接通过[key]的下标方式获取文件对象,正确实现有两种:

基于resource的实现

import boto3
s3_resource = boto3.resource('s3')
# 直接构造目标文件的Object对象
file_obj = s3_resource.Object('testunzipping', 'DataPump_10000838.zip')
last_modified = file_obj.last_modified

基于client的实现

调用head_object接口获取文件元数据即可,无需遍历整个桶的文件列表:

import boto3
s3_client = boto3.client('s3')
resp = s3_client.head_object(Bucket='testunzipping', Key='DataPump_10000838.zip')
last_modified = resp['LastModified']

如果你已经调用过list_objects接口,返回的Contents列表中每个元素自带LastModified字段,可以直接从该字段取值,不需要额外发起请求。

2、调用s3.download_file下载文件时,是否可以直接提取该文件的last_modified属性?

download_file接口本身没有返回文件元数据的能力,无法在下载的同时直接获取该属性。可以通过以下两种方式实现相同需求:

  • 先调用head_object获取最后修改时间,再执行下载操作,两次接口请求的开销很小,不会影响执行效率
  • 调用get_object接口一次性获取文件元数据和文件流,自行写入本地,替代download_file的功能:
import boto3
s3_client = boto3.client('s3')
resp = s3_client.get_object(Bucket='testunzipping', Key='DataPump_10000838.zip')
# 直接获取最后修改时间
last_modified = resp['LastModified']
# 写入本地文件
with open('/tmp/DataPump_10000838.zip', 'wb') as f:
    f.write(resp['Body'].read())

内容的提问来源于stack exchange,提问作者x89

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:27:02