Я создаю автоматизацию на Python, которая будет автоматически переходить на веб-сайт моей школы, присоединяться к онлайн-классу и т. Д. С помощью селена. Я полностью закончил эту часть, и все работает отлично. Теперь я пытаюсь понять, как запланировать эти действия.

Я думал об использовании расписания? Кажется, он хорош для простых работ, но я не знаю, пригодится ли оно для чего-то вроде этого.

Всего у меня 10 классов. У меня 6 занятий в день. Моя школьная неделя длится с понедельника по пятницу. В моем расписании всего 6 дней , что означает, что каждую неделю один день в расписании меняется, а у меня его нет на этой неделе, а сменяется другой.

Итак, чтобы объяснить, что я имею в виду, в первую неделю у меня будут дни 1-5 с понедельника по пятницу, но не будет дня 6. У меня будет день 6 в следующий понедельник. .

Я определил дни следующим образом:

import configparser
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

driver = webdriver.Firefox()


<defining what each class does here with selenium, etc.>


# Defining what classes I have in each day

def Day1():
    class()
    class()
    class()
    class()
    class()
    class()

def Day2():
    class()
    class()
    class()
    class()
    class()
    class()

def Day3():
    class()
    class()
    class()
    class()
    class()
    class()

def Day4():
    class()
    class()
    class()
    class()
    class()
    class()

def Day5():
    class()
    class()
    class()
    class()
    class()
    class()

def Day6():
    class()
    class()
    class()
    class()
    class()
    class()

Каждый class просто другой класс, который у меня каждый день. Некоторые из них такие же, некоторые разные, но для этого вопроса это не имеет значения. (Я только что позвонил им всем class, чтобы ответить на этот вопрос, потому что это проще)

Как мне составить расписание для этих дней (День 1 - День 6), чтобы они работали с понедельника по пятницу с чередованием одного дня, а затем обратно на следующей неделе (как я описал выше)?

Кажется, что модуль Python schedule сможет это сделать, но я не Даже не знаю, с чего начать, когда у меня что-то вроде этого.

Я чувствую, что это было бы довольно простое решение, но я не могу с этим справиться.

1
scob_ 26 Сен 2020 в 08:55

1 ответ

Лучший ответ

Вам нужно рассчитать, какой сегодня день школьного семестра, и изменить его на 6. Хорошей отправной точкой будет этот фрагмент кода, чтобы получить текущий день в текущем году:

from datetime import datetime
day_of_year = datetime.now().timetuple().tm_yday

Вы также захотите выяснить, какой день в году был первым днем ​​в школе. Назовите это first_day_of_school. Затем, предполагая, что школа началась в понедельник:

day_of_school = day_of_year - first_day_of_school
week_of_school = day_of_school // 7
day_of_week = day_of_school % 7 # 0 means Monday, European style
day_of_term = week_of_school * 5 + day_of_week
class_index = day_of_term % 6

Теперь class_index - это число в [0, 5], говорящее вам, какой набор занятий следует посетить в этот день.

Возможно, вам придется отрегулировать это для праздников, например если пятничный выходной означает, что пятничные занятия не пропускаются, а переносятся на понедельник. Для этого вам нужна правильная арифметика рабочего дня, которую можно легко и эффективно выполнить с помощью NumPy или других библиотек, или вы можете просто жестко запрограммировать список праздников и сделать это грубой силой, так как учебный семестр длится всего несколько месяцев. .

2
John Zwinck 26 Сен 2020 в 06:12