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

2024-09-27 07:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我在文件中有以下文本:demo.txt,其中包含日期文件夹名

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

下面是我的日期文件夹:

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

如果仔细观察缺少日期文件夹2021090420210905等,则需要将该文件夹名称打印为输出

预期输出:

20210904 
20210905 
20210911
20210914
20210916

我的代码:

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])

Tags: 文件代码in文本txt文件夹名称for
2条回答

请参见下文(想法是将字符串转换为日期,查找最小值和最大值,在最小值和最大值之间循环并查找“孔”)

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)]

您应该迭代文件并从每一行创建^{}对象。您可以使用格式为"%Y%m0%d"^{}将字符串解析为datetime对象。然后计算日期之间的差异,如果超过1天,则启动循环将使用格式为"%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

相关问题 更多 >

    热门问题