Python3 - 時間處理與定時任務
本文轉自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 = [( 2 , 36 ), ( 3 , 35 ), ( 3 , 45 ), ] times2 = [( 3 , 0 ), ( 5 , 13 ), ( 4 , 12 ), ( 1 , 10 ), ] assert total_timer(times1) = = datetime.timedelta( 0 , 596 ) assert total_timer(times2) = = datetime.timedelta( 0 , 815 ) print ( "Tests
passed.\n" "First
test total: %s\n" "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 ) |