如何使用python打印目录中缺失的日期文件夹



我有一个下面的文本文件:demo.txt,其中包含日期文件夹名称

需要识别丢失的日期文件夹

下面是我的日期文件夹:

20210901
20210902
20210903
20210906
20210907
20210908
20210909
202109010
202109012
202109013
202109015
202109017
202109018
202109019

如果您仔细观察日期文件夹2021090420210905等丢失,则需要将这些文件夹名称打印为输出

预期输出:

20210904 
20210905 
20210911
20210914
20210916

My code:

listItems=[]
f = open(demo.txt, "r")
listItems = f.read().splitlines()
cunt=count(listItems)

for i in range(cunt):
for i in list:
if i == substr(list,1,3):
print('present')
else:
print(list[i])

您应该遍历文件并从每行创建datetime对象。您可以使用datetime.strptime()格式"%Y%m0%d"来将字符串解析为datetime对象。然后计算日期之间的差异,如果超过1天,则使用strftime()启动循环,使用"%Y%m%d":

格式打印错过的日期
from datetime import datetime, timedelta
with open("demo.txt") as f:
prev_date = None
for line in f:
curr_date = datetime.strptime(line.rstrip(), "%Y%m0%d")
if prev_date:
for i in range(1, (curr_date - prev_date).days):
print((prev_date + timedelta(days=i)).strftime("%Y%m%d"))
prev_date = curr_date

如下所示(想法是将字符串转换为日期,查找min &Max,在min和Max之间循环并找到"洞">

from datetime import datetime,timedelta
dates_str = ['20210905','20210904','20210905','20210911','20210913'] 
dates = [datetime. strptime(d, '%Y%m%d') for d in dates_str]
_min = min(dates)
_max = max(dates)
missing = []
while _min < _max:
_min += timedelta(days=1)
if _min not in dates:
missing.append(_min)
print(missing)

输出
[datetime.datetime(2021, 9, 6, 0, 0), datetime.datetime(2021, 9, 7, 0, 0), datetime.datetime(2021, 9, 8, 0, 0), datetime.datetime(2021, 9, 9, 0, 0), datetime.datetime(2021, 9, 10, 0, 0), datetime.datetime(2021, 9, 12, 0, 0)]

最新更新