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

S3存储桶报表显示首次修改时间而非最新修改时间问题求助

问题根因

你当前的代码是遍历S3对象时直接覆盖modified字段,遍历顺序默认是按对象名正序排列,因此最终存储的修改时间会是遍历到的最后一个对象的时间,若遍历顺序和上传时间正序一致,就会得到最早上传文件的修改时间。你直接在赋值语句后加reverse=True报错,是因为该参数是排序方法的专属参数,不能直接加在普通赋值语句后。

解决方案

方案1:遍历过程中动态对比保留最新时间

在初始化文件夹属性时,先给modified字段设置UTC时区的最小初始值,遍历每个对象时做时间对比,仅当新对象的修改时间晚于已存储的时间时才更新字段:

# 需提前导入datetime模块
import datetime

# 初始化文件夹属性时设置初始值
top_level_folders[folder]['modified'] = datetime.datetime.min.replace(tzinfo=datetime.timezone.utc)

# 遍历到每个S3对象时执行以下逻辑替换原有赋值逻辑
if obj.last_modified > top_level_folders[folder]['modified']:
    top_level_folders[folder]['modified'] = obj.last_modified

方案2:收集所有时间后排序取最新值

如果你希望通过排序的方式实现,可以先把当前文件夹下所有对象的修改时间收集为列表,排序后取最新值:

# 收集当前文件夹下所有对象的修改时间
mod_time_list = [obj.last_modified for obj in 当前文件夹下的所有对象列表]
# 倒序排序后第一个元素即为最新修改时间
mod_time_list.sort(reverse=True)
top_level_folders[folder]['modified'] = mod_time_list[0]

后续逻辑

你原有的报表行添加逻辑不需要做任何修改,调整赋值逻辑后folder[1]['modified']存储的就会是文件夹下最新文件的修改时间。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:06