Создать файл шаблона еженедельного отчета для последней недели
В этом шаге вы научитесь создавать файл шаблона еженедельного отчета для последней недели, начиная с понедельника недели, содержащей скорректированную конечную дату.
- В функции
create
добавьте следующий код после корректировки конечной даты:
def create(start_date, end_date):
## Create the "weekly" folder
os.makedirs("weekly", exist_ok=True)
## Find the Friday of the week containing the start date
#... (предыдущие шаги)
## Traverse the date range starting from the Friday of the start date's week
#... (предыдущие шаги)
## Adjust the end date to the previous Friday if it falls on a Saturday or Sunday
#... (предыдущий шаг)
## Create a submission for the week from Monday to the adjusted end date
## Find the Monday of the week containing the adjusted end date
current_date = end_date
## Construct the file name
file_name = current_date.strftime("%Y-%m-%d") + ".txt"
file_path = os.path.join("weekly", file_name)
while current_date.weekday()!= 0: ## 0 represents Monday
current_date -= datetime.timedelta(days=1)
## Write file content
with open(file_path, "w") as file:
## Write the range of weekdays from Monday to the adjusted end date (excluding weekends)
date = current_date
while date <= end_date:
if date.weekday() < 5: ## 0 represents Monday, 4 represents Friday
file.write(date.strftime("%Y-%m-%d") + "\n")
date += datetime.timedelta(days=1)
В коде сначала определяется понедельник недели, содержащей скорректированную конечную дату. Затем строится имя файла для шаблона еженедельного отчета для последней недели и открывается файл для записи.
Внутри файла код записывает диапазон рабочих дней от понедельника до скорректированной конечной даты, исключая выходные дни.
Это гарантирует, что файл шаблона еженедельного отчета для последней недели включает только рабочие дни от понедельника недели, содержащей скорректированную конечную дату, до самой скорректированной конечной даты.
С помощью вышеперечисленных шагов вы завершили реализацию функции create
в файле report.py
, которая генерирует шаблоны еженедельных отчетов на основе указанных начальной и конечной дат.
- Чтобы сгенерировать шаблоны еженедельных отчетов, запустите скрипт
report.py
с помощью команды python report.py
в терминале. Скрипт создаст шаблоны еженедельных отчетов на основе указанных начальной и конечной дат.
Ниже приведены некоторые примеры:
## example 1
## start_date = datetime.date(2023,10,1) Sunday
## end_date = datetime.date(2023,10,16) Monday
$ ls weekly
2023-10-06.txt 2023-10-13.txt 2023-10-16.txt
$ cat 2023-10-06.txt
2023-10-02
2023-10-03
2023-10-04
2023-10-05
2023-10-06
$ cat 2023-10-16.txt
2023-10-16
## example 2
## start_date = datetime.date(2023,9,10) Sunday
## end_date = datetime.date(2023,9,24) Sunday
$ ls weekly
2023-09-15.txt 2023-09-22.txt
$ cat 2023-09-15.txt
2023-09-11
2023-09-12
2023-09-13
2023-09-14
2023-09-15
$ cat 2023-09-22.txt
2023-09-18
2023-09-19
2023-09-20
2023-09-21
2023-09-22