• Python3


    无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务,注意咯:本篇所讲是python3版本的实现,在python2版本中的实现略有不同,有时间会再写一篇以便大家区分。

    1.计算明天和昨天的日期

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #! /usr/bin/env python
    #coding=utf-8
    # 获取今天、昨天和明天的日期
    # 引入datetime模块
    import datetime 
    #计算今天的时间
    today = datetime.date.today()
    #计算昨天的时间 
    yesterday = today - datetime.timedelta(days = 1)
    #计算明天的时间
    tomorrow = today + datetime.timedelta(days = 1
    #打印这三个时间
    print(yesterday, today, tomorrow)

    2.计算上一个的时间

    方法一:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #! /usr/bin/env python
    #coding=utf-8
    # 计算上一个的时间
    #引入datetime,calendar两个模块
    import datetime,calendar
      
    last_friday = datetime.date.today() 
    oneday = datetime.timedelta(days = 1
        
    while last_friday.weekday() != calendar.FRIDAY: 
        last_friday -= oneday 
        
    print(last_friday.strftime('%A, %d-%b-%Y'))

    方法二:借助模运算寻找上一个星期五

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #! /usr/bin/env python
    #coding=utf-8
    # 借助模运算,可以一次算出需要减去的天数,计算上一个星期五
    #同样引入datetime,calendar两个模块
    import datetime 
    import calendar 
        
    today = datetime.date.today() 
    target_day = calendar.FRIDAY 
    this_day = today.weekday() 
    delta_to_target = (this_day - target_day) % 7
    last_friday = today - datetime.timedelta(days = delta_to_target) 
        
    print(last_friday.strftime("%d-%b-%Y"))

    3.计算歌曲的总播放时间

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    #! /usr/bin/env python
    #coding=utf-8
    # 获取一个列表中的所有歌曲的播放时间之和 
    import datetime 
        
    def total_timer(times): 
        td = datetime.timedelta(0
        duration = sum([datetime.timedelta(minutes = m, seconds = s) for m, s in times], td) 
        return duration 
        
    times1 = [(236), 
              (335), 
              (345), 
              
    times2 = [(30), 
              (513), 
              (412), 
              (110), 
              
        
    assert total_timer(times1) == datetime.timedelta(0596
    assert total_timer(times2) == datetime.timedelta(0815
        
    print("Tests passed. "
          "First test total: %s "
          "Second test total: %s" % (total_timer(times1), total_timer(times2)))

    4.反复执行某个命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #! /usr/bin/env python
    #coding=utf-8
    # 以需要的时间间隔执行某个命令 
        
    import time, os 
        
    def re_exe(cmd, inc = 60): 
        while True
            os.system(cmd); 
            time.sleep(inc) 
        
    re_exe("echo %time%"5)

    5.定时任务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #! /usr/bin/env python
    #coding=utf-8
    #这里需要引入三个模块
    import time, os, sched 
        
    # 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 
    # 第二个参数以某种人为的方式衡量时间 
    schedule = sched.scheduler(time.time, time.sleep) 
        
    def perform_command(cmd, inc): 
        os.system(cmd) 
            
    def timming_exe(cmd, inc = 60): 
        # enter用来安排某事件的发生时间,从现在起第n秒开始启动 
        schedule.enter(inc, 0, perform_command, (cmd, inc)) 
        # 持续运行,直到计划时间队列变成空为止 
        schedule.run() 
            
        
    print("show time after 10 seconds:"
    timming_exe("echo %time%"10)

    6.利用sched实现周期调用

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #! /usr/bin/env python
    #coding=utf-8
    import time, os, sched 
        
    # 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 
    # 第二个参数以某种人为的方式衡量时间 
    schedule = sched.scheduler(time.time, time.sleep) 
        
    def perform_command(cmd, inc): 
        # 安排inc秒后再次运行自己,即周期运行 
        schedule.enter(inc, 0, perform_command, (cmd, inc)) 
        os.system(cmd) 
            
    def timming_exe(cmd, inc = 60): 
        # enter用来安排某事件的发生时间,从现在起第n秒开始启动 
        schedule.enter(inc, 0, perform_command, (cmd, inc)) 
        # 持续运行,直到计划时间队列变成空为止 
        schedule.run() 
            
        
    print("show time after 10 seconds:"
    timming_exe("echo %time%"10)
  • 相关阅读:
    BZOJ 1191 HNOI2006 超级英雄hero
    BZOJ 2442 Usaco2011 Open 修建草坪
    BZOJ 1812 IOI 2005 riv
    OJ 1159 holiday
    BZOJ 1491 NOI 2007 社交网络
    NOIP2014 D1 T3
    BZOJ 2423 HAOI 2010 最长公共子序列
    LCA模板
    NOIP 2015 D1T2信息传递
    数据结构
  • 原文地址:https://www.cnblogs.com/paranoia/p/6182417.html
Copyright © 2020-2023  润新知