请求协助:实现两个文件修改时间的10分钟差值校验
解决文件修改时间差校验问题
你现在的代码已经完成了文件存在性检查和修改时间读取,但问题在于把时间戳转成格式化字符串后无法直接计算差值。下面是修改后的完整代码,已加入10分钟时间差的校验逻辑:
import os import time import sys import shutil savefile = "./" # 替换为你的实际文件路径 # 检查第一个文件并保留原始时间戳 if os.path.isfile(savefile + 'pickle_raw.txt'): mod_time_raw = os.path.getmtime(savefile + 'pickle_raw.txt') modificationTime0 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mod_time_raw)) print("Last Modified on:", modificationTime0, "pickle_raw.txt") else: print("Logfile Error: pickle_raw.txt not found") sys.exit() # 检查第二个文件,不存在则复制后退出;存在则保留原始时间戳 if os.path.isfile(savefile + 'pickle_RawIfExist.txt'): mod_time_raw_if_exist = os.path.getmtime(savefile + 'pickle_RawIfExist.txt') modificationTime1 = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(mod_time_raw_if_exist)) print("Last Modified on:", modificationTime1, "pickle_RawIfExist.txt") else: src = savefile + 'pickle_raw.txt' des = savefile + 'pickle_RawIfExist.txt' shutil.copy(src, des) print("pickle_raw.txt copied to pickle_RawIfExist.txt") print("Exit the Program") sys.exit() # 执行10分钟时间差校验 MAX_ALLOWED_DIFF = 10 * 60 # 10分钟转换为秒数 time_diff = abs(mod_time_raw - mod_time_raw_if_exist) if time_diff > MAX_ALLOWED_DIFF: print(f"Error: 文件修改时间差超过10分钟,差值为{round(time_diff/60, 2)}分钟") sys.exit() else: print(f"文件修改时间校验通过,差值为{round(time_diff/60, 2)}分钟")
关键修改说明:
- 保留原始时间戳:将两个文件的
os.path.getmtime结果分别存入独立变量,这是从1970年开始计算的秒数(epoch时间),可直接用于数值计算。 - 时间差计算逻辑:用绝对值计算两个时间戳的差值,与10分钟对应的600秒做比较,判断是否超出允许范围。
- 明确的校验反馈:校验不通过时打印具体差值并退出程序,通过时给出成功提示,便于调试和问题排查。
内容的提问来源于stack exchange,提问作者Rainer
相关产品推荐
相关产品推荐

