如何使用比较运算符(>)处理datetime?解决时间差与整数比较报错
修复目录创建时间判断的代码错误
错误原因
你碰到的TypeError是因为age_of_directory是**datetime.timedelta类型的时间差对象**,不能直接和整数4比较——整数没有时间单位,Python无法识别你要对比的是4秒、4小时还是4天,因此不支持这种跨类型运算。
修复方案
- 从
datetime模块导入timedelta,用来创建明确的“4天”时间差对象 - 将判断条件中的
4替换为timedelta(days=4),让两边类型统一 - 修正代码里的拼写错误(
curret_time→current_time),同时补上缺失的os模块导入
修复后的完整代码
import os from datetime import datetime, timedelta # 获取当前时间 current_time = datetime.now() # 获取目录的创建时间 stat = os.stat(my_directory) creation_time = datetime.fromtimestamp(stat.st_birthtime) # 计算目录已存在的时长 age_of_directory = current_time - creation_time # 判断是否超过4天(调试阶段先打印) if age_of_directory > timedelta(days=4): # shutil.rmtree(my_directory) # 确认逻辑正确后取消注释执行删除 print(age_of_directory) # 调试用
额外注意
如果在部分Unix系统中使用st_birthtime报错(部分系统不支持该字段),可以替换为st_ctime:
- Windows系统中
st_ctime代表文件创建时间 - Unix系统中
st_ctime代表文件元数据最后修改的时间,可根据你的运行环境调整
内容的提问来源于stack exchange,提问作者Supertech
相关产品推荐
相关产品推荐

