我有一个文本文件,其中包含截止日期和任务分配的日期以及任务是否完成。我想编写一个可以遍历文件并确定任务是否过期的代码。我已经将文本文件中的每一行都转换为一个列表,我正在尝试检查到期日期是否已超过当前日期,以及该行中注释任务是否完成的部分是否为“否”。
for line in rdfile:
line.strip("\n")
thetasks = line.split(", ")
截止日期是列表中的倒数第二项,用于指定任务是否完成的否是列表中的最后一项。
假设该行是:
Admin, Assign initial tasks, 14 Apr 2020, 02 Apr 2020, No
使用上面的代码后,我有一个列表,其中包含上面各行中的各项,以逗号和空格分隔。
答案 0 :(得分:0)
根据您的示例并假设行的格式保持不变,您可以使用它。
from datetime import datetime
line = "Admin, Assign initial tasks, 14 Apr 2020, 02 Apr 2020, No"
splitLine = line.split(',')
date_obj = datetime.strptime(splitLine[2].lstrip(), '%d %b %Y')
print(date_obj.strftime('%d-%m-%Y'))
yes_no = splitLine[4].lstrip()
print(yes_no)
答案 1 :(得分:0)
此功能将完成这项工作:
from datetime import datetime
def is_overdue(task):
splited_line = [elem.strip() for elem in task.split(",")]
# Datetime object with current datetime
now = datetime.now()
# Datetime object with due datetime
due_datetime = datetime.strptime(splited_line[-2], '%d %b %Y')
# Boolean value representing task completion
is_finished = (splited_line[-1] != "No")
return (not is_finished) and (due_datetime < now)
line = "Admin, Assign initial tasks, 14 Apr 2020, 02 Apr 2020, No"
print(is_overdue(line))
# True
该函数将检查给定的行中是否有两件事:
(due_datetime < now)