Python如何判断文件最后修改时间是否处于当前周(周一至周日)
Python判断文件是否在本周(周一至周日)更新的实现方案
首先可以明确:把时间戳直接转换为datetime对象,比用ctime转字符串再处理要简便得多。ctime返回的字符串需要额外做格式解析才能提取周信息,不仅多了冗余步骤,还容易出现格式、时区适配的问题,而datetime内置的方法可以直接完成周数判断,逻辑更简洁易维护。
实现思路
利用datetime对象的isocalendar()方法,该方法返回的结果包含(年份, 周数, 周内第几天)三个属性,其中周数的计算规则默认以周一作为一周的第一天,完全匹配你要求的「周一至周日为一周」的统计规则。只需要同时对比文件修改时间和当前时间的年份+周数两个属性,两者都相等即代表文件在本周内更新,同时也能自动处理跨年周的边界问题。
完整示例代码
import os from datetime import datetime def is_file_updated_this_week(file_path: str) -> bool: # 校验文件是否存在 if not os.path.isfile(file_path): return False # 读取文件修改时间戳并转换为datetime对象 mtime = datetime.fromtimestamp(os.path.getmtime(file_path)) # 分别获取文件修改时间和当前时间的ISO年、周数 mtime_year, mtime_week, _ = mtime.isocalendar() current_year, current_week, _ = datetime.now().isocalendar() # 年和周数同时相等则属于本周 return mtime_year == current_year and mtime_week == current_week # 业务逻辑调用示例 if __name__ == "__main__": target_file = "你的目标文件路径" if is_file_updated_this_week(target_file): print("文档本周已更新,无需操作") else: print("文档未在本周更新,执行更新逻辑") # 此处补充你的文档更新业务代码
注意事项
如果你的应用需要适配多时区场景,可以将datetime.now()替换为带时区的对象(例如datetime.now(datetime.timezone.utc)),同时给fromtimestamp方法传入相同时区参数,避免时区偏差导致的周数判断错误。
内容的提问来源于stack exchange,提问作者Emi OB
相关产品推荐
相关产品推荐

