如何通过RobotFramework实现删除修改日期早于5天的文件或文件夹?
需求实现方案
问题背景
需要实现删除修改日期早于当前日期5天的文件或文件夹,现有测试用例通过手动设置年份为2022触发删除逻辑,现在要调整为符合实际需求的自动判断逻辑。
核心修改思路
- 自动获取当前时间,计算出5天前的时间戳(使用Unix时间戳格式,方便数值比较)
- 遍历目标目录下的每个文件/文件夹,获取其修改时间的时间戳
- 对比文件修改时间戳与5天前的时间戳,若前者更小则执行删除操作
- 替换原代码中
Empty Directory(清空整个目录)的危险操作,改用Remove File或Remove Directory删除单个目标
修改后的完整测试用例
*** Settings *** Library OperatingSystem Library DateTime *** Test Cases *** Delete Files Older Than 5 Days # 获取当前时间的Unix时间戳(秒) ${current_epoch}= Get Current Date epoch=seconds # 计算5天前的时间戳(5天=5*24*3600秒) ${five_days_ago_epoch}= Evaluate ${current_epoch} - 5*24*3600 Log To Console "当前时间戳: ${current_epoch}" Log To Console "5天前时间戳: ${five_days_ago_epoch}" # 遍历目标目录下的所有文件/文件夹(绝对路径) ${files}= List Files In Directory C:/trydel/ver1 absolute=True FOR ${file} IN @{files} # 获取文件修改时间的Unix时间戳 ${modified_epoch}= Get Modified Time ${file} epoch=seconds Log To Console "文件 ${file} 的修改时间戳: ${modified_epoch}" # 判断是否早于5天前 IF ${modified_epoch} < ${five_days_ago_epoch} # 判断是文件还是目录,执行对应删除操作 Run Keyword If ${file} is file Remove File ${file} Run Keyword If ${file} is directory Remove Directory ${file} recursive=True Log To Console "已删除: ${file}" END END
关键说明
- 引入
DateTime库辅助时间计算,也可直接用Evaluate做算术运算 - 使用Unix时间戳(秒数)进行时间比较,比按年/月判断更精准,符合"早于5天"的需求
- 区分文件和目录,分别用
Remove File和Remove Directory(加recursive=True删除非空目录),避免误删整个目标目录 - 去掉了手动设置的年份变量,改为自动获取当前时间,无需手动干预
内容的提问来源于stack exchange,提问作者user2201789
相关产品推荐
相关产品推荐

