在 python 中安排 5 天的 6 天时间表

Schedule a 6-day timetable for 5 days in python

我正在 Python 中创建一个自动化,它将自动导航到我学校的网站,并使用 selenium 加入在线 class 等。我已经完全完成了那部分,并且一切正常。现在,我正在尝试弄清楚如何安排这些操作。

我在考虑使用 schedule?对于简单的工作来说似乎不错,但我不知道它是否对这样的事情有好处。

我总共有 10 个 class。我一天有 6 classes。我的学校周从星期一和星期五开始。在我的时间表里,一共是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 我每天都有。有些相同,有些不同,但这对这个问题来说并不重要。 (对于这个问题,我刚刚将它们全部称为 class 因为这样更容易)

我如何安排这些日子(第 1 天 - 第 6 天),以便他们 运行 在周一到周五轮换一天,然后在下周轮换回来(如上所述)?

Python schedule 模块似乎可以做到,但当我遇到这样的事情时,我什至不知道从哪里开始。

我觉得这将是一个非常简单的解决方案,但我似乎无法解决。

您需要计算现在是学期的哪一天,然后 mod 到 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 或其他库轻松高效地完成,或者您可以 hard-code 一个假期列表并执行 brute-force,因为一个学期只是几个月了。