从文件到每个时间戳增加15分钟

时间:2018-11-06 09:55:35

标签: python

我的文件中有时间戳记

peakdata_20180821_1615.bz2

我正在抓取数据,因此我需要从几个月开始为每个时间戳添加15分钟。 问题是我缺少某些文件的数据,因此我想每天仅增加15分钟,例如从8月到10月。

 for root, dirnames, files in os.walk(r"c:\ahmed\SpeedFT-meter1\peakdata"):
    for j in dirnames:
        for i in range(96):
            s = datetime.strptime(j, '%Y-%m-%d') + timedelta(minutes=15)
            timeStamps.append(s)
            directoary_names.append(root + r'\'' + 'peakdata_' + s.strftime("%Y%m%d_%M%H"))

2 个答案:

答案 0 :(得分:2)

首先,从文件名中提取包含日期时间的字符串。你已经说对了。然后,将字符串转换为Python datetime对象。最后,添加15分钟的timedelta

>>> from datetime import datetime, timedelta
>>> datetime.strptime('20180821_1615', '%Y%m%d_%H%M')
datetime.datetime(2018, 8, 21, 16, 15)
>>> datetime.strptime('20180821_1615', '%Y%m%d_%H%M') + timedelta(minutes=15)
datetime.datetime(2018, 8, 21, 16, 30)

答案 1 :(得分:0)

这是一个可以满足您需求的功能

def new_name(file, low=datetime(2018, 8, 1), high=datetime(2018, 9, 1)):
    """ Transform a filename of the form `peakdata_%Y%m%d_%H%M.bz2` to one 15 minutes
    later if it sits within the specified time range (August 2018 by default).

    Returns None on failure
    """
    try:
        dt = datetime.strptime(file, "peakdata_%Y%m%d_%H%M.bz2")
    except ValueError:
        return
    if low <= dt <= high:
        return (dt + timedelta(minutes=15)).strftime("peakdata_%Y%m%d_%H%M.bz2")

只需将其应用于您获得的每个文件,然后如果不是Noneos.rename该文件。