python笔记-检测时间数据递增正确性

概述

本文主要描述了使用一个python脚本检查输入的时间数据,是否按正常递增的格式增加。

背景

在平常写时间校准算法的过程中,输出的数据不好检查是否每个时刻数据都是正确的,所以需要写一个脚本来检查,时间校准算法输出的时间数据是否正确,且考虑了闰年、大小月的情况。

实现

实现的python脚本(py_test.py)

# -*- coding: utf-8 -*-
from datetime import datetime
from tqdm import tqdm

def check_datetime_format(datetime_str):
    try:
        datetime.strptime(datetime_str, '%Y-%m-%d-%H:%M:%S')
        return True
    except ValueError:
        return False

def is_datetime_increasing(datetimes):
    prev_datetime = None
    for i, datetime_str in enumerate(tqdm(datetimes, desc="检查日期时间递增", unit="行")):
        current_datetime = datetime.strptime(datetime_str, '%Y-%m-%d-%H:%M:%S')
        if prev_datetime is not None and current_datetime <= prev_datetime:
            return False, i + 1  # 返回错误数据的行号
        prev_datetime = current_datetime
    return True, None

def main():
    file_name = "log.txt"  # 指定当前目录下的log.txt文件
    try:
        with open(file_name, 'r') as file:
            datetime_data = file.read().strip().split()
    except IOError:
        print("文件不存在,请检查文件路径和文件名是否正确")
        return

    # 检查日期时间格式
    for i, datetime_str in enumerate(tqdm(datetime_data, desc="检查日期时间格式", unit="行")):
        if not check_datetime_format(datetime_str):
            print("日期时间格式错误,请检查以下数据:%s,行号:%d" % (datetime_str, i + 1))
            return

    # 检查日期时间递增
    is_increasing, error_line = is_datetime_increasing(datetime_data)
    if is_increasing:
        print("日期时间数据符合正常时间增加的格式")
    else:
        print("日期时间数据不符合正常时间增加的格式,错误的行号是:%d" % error_line)

if __name__ == "__main__":
    main()

使用方法

1、需要准备输入的数据内容

在py脚本的同目录下生成一个log.txt文件,文件的内容参考如下为

2023-01-01-08:00:00
2023-01-01-08:00:01
2023-01-01-08:00:02
2023-01-01-08:00:03
2023-01-01-08:00:04
2023-01-01-08:00:05
2023-01-01-08:00:06
2023-01-01-08:00:07
2023-01-01-08:00:08
2023-01-01-08:00:09
2023-01-01-08:00:10
2023-01-01-08:00:11
2023-01-01-08:00:12
2023-01-01-08:00:13
2023-01-01-08:00:14
2023-01-01-08:00:15
2023-01-01-08:00:16
2023-01-01-08:00:17
2023-01-01-08:00:18
2023-01-01-08:00:19
2023-01-01-08:00:20
2023-01-01-08:00:21
2023-01-01-08:00:22
2023-01-01-08:00:23
2023-01-01-08:00:24
2023-01-01-08:00:25

2、安装python 的tqdm包

pip install tqdm

3、执行脚本

python py_test.py

执行脚本后会得到输出结果如下(日期数据递增是正确的)

root:~/code$ python .\py_test=.py
检查日期时间格式: 100%|██████████████████████████████████████████████████| 4289849/4289849 [00:34<00:00, 123406.39行/s] 
检查日期时间递增: 100%|██████████████████████████████████████████████████| 4289849/4289849 [00:34<00:00, 123406.20行/s] 
日期时间数据符合正常时间增加的格式     

如果数据递增不正取(手动修改第22行的日期多一天),则输出以下结果

root:~/code$ python .\py_test=.py
检查日期时间格式: 100%|██████████████████████████████████████████████████| 4289849/4289849 [00:35<00:00, 122178.22行/s]
检查日期时间递增:   0%|                                                                   | 21/4289849 [00:00<?, ?行/s]
日期时间数据不符合正常时间增加的格式,错误的行号是:22

错误的数据如下

2023-01-01-08:00:00
2023-01-01-08:00:01
2023-01-01-08:00:02
2023-01-01-08:00:03
2023-01-01-08:00:04
2023-01-01-08:00:05
2023-01-01-08:00:06
2023-01-01-08:00:07
2023-01-01-08:00:08
2023-01-01-08:00:09
2023-01-01-08:00:10
2023-01-01-08:00:11
2023-01-01-08:00:12
2023-01-01-08:00:13
2023-01-01-08:00:14
2023-01-01-08:00:15
2023-01-01-08:00:16
2023-01-01-08:00:17
2023-01-01-08:00:18
2023-01-01-08:00:19
2023-01-02-08:00:20
2023-01-01-08:00:21

可以看到第22行(就是倒数第二行)的日期多算了一天

总结

使用python脚本进行数据检查还是很方便的

免责声明:本文内容含网络参考、作者编写等,内容版权归原作者所有,未经允许,禁止转载。如涉及作品版权问题,请与我们联系,我们将根据您提供的版权证明材料确认版权并支付稿酬或者删除内容。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值