十五 保持時間 計畫任務和啟動程式

2021-10-08 23:18:32 字數 4578 閱讀 8143

關於《python程式設計快速上手-讓繁瑣工作自動化》的學習筆記

>>> time.time()

1593999560.3885942

>>> for i in range(2):

... print('a')

... time.sleep(2)

... print('b')

... time.sleep(2)

... print('c')

... time.sleep(2)

...abc

abc

使用python內建函式round()函式將數字四捨五入,該函式按照指定的精度四捨五入到乙個浮點數,如果省略第二個引數即精度則四捨五入到最接近的整數。

>>>import time

>>> t=time.time()

>>> t

1594000241.1955626

>>> round(t)

1594000241

>>> round(t,1)

1594000241.2

>>> round(t,3)

1594000241.196

需要以更方便的格式顯示日期或對日期進行算術運算則應該使用datetime模組。datetime模組有自己的datetime資料型別,datetime值表示乙個特定的時刻。

>>> import datetime

>>> datetime.datetime.now()

datetime.datetime(2020, 7, 6, 9, 54, 55, 379094)

>>> dt=datetime.datetime.now()

>>> dt

datetime.datetime(2020, 7, 6, 9, 55, 29, 615029)

>>> dt.year,dt.month,dt.day

(2020, 7, 6)

>>> dt.hour,dt.minute,dt.second

(9, 55, 29)

呼叫datetime.datetime.now()返回乙個datetime物件,表示當前時刻的年、月、日、時、分、秒、微秒。也可以利用datetime.datetime()函式向它傳入年、月、日、時、分、秒的整數,得到特定時刻的datetime物件。

unix紀元時間戳可以通過datetime.datetime.fromtimestamp()轉換為datetime物件,datetime物件的日期和時間將根據本地時區轉換。

>>> datetime.datetime.fromtimestamp(1234567899)

datetime.datetime(2009, 2, 14, 7, 31, 39)

>>> datetime.datetime.fromtimestamp(time.time())

datetime.datetime(2020, 7, 6, 10, 1, 43, 678503)

datetime物件可以用比較操作符進行比較,弄清楚誰在前面。

>>> a=datetime.datetime.fromtimestamp(1234567899)

>>> b=datetime.datetime.fromtimestamp(time.time())

>>> b>a

true

>>> a>b

false

>>> delta=datetime.timedelta(days=11,hours=10,minutes=9,seconds=8)

>>> delta.days,delta.seconds,delta.microseconds

(11, 36548, 0)

>>> delta.total_seconds()

986948.0

>>> str(delta)

'11 days, 10:09:08'

算術運算子可以對datetime值進行日期運算。利用+和-運算子,將timedelta物件與datetime物件或其他timedelta物件相加或相減;利用*和/運算子,timedelta物件可以進行乘以或除以整數或浮點數。

>>>dt=datetime.datetime.now()

>>> dt

datetime.datetime(2020, 7, 6, 9, 55, 29, 615029)

>>> days=datetime.timedelta(days=1000)

>>> dt+days

datetime.datetime(2023, 4, 2, 9, 55, 29, 615029)

>>> endtime=datetime.datetime(2020,7,6,10,20,0,0)

>>> while datetime.datetime.now() < endtime:

... time.sleep(1)

strftime指令

含義%y

帶世紀的年份,例如』2020』

%y不帶世紀的年份,『00』至』99』(1970至2069)

%m數字表示的月份,『01至12』

%b完整的月份,例如』november』

%b簡寫的月份,例如』nov』

%d一月中的第幾天,『01』至』31』

%j一年中的第幾天,『001』至』366』

%w一周中的第幾天,『0』(週日)至』6』(週六)

%a完整的週幾,例如』monday』

%a簡寫的週幾,例如』mon』

%h小時(24小時時鐘),『00』至』23』

%i小時(12小時時鐘),『01』至』12』

%m分,『00』至』59』

%s秒,『00』至』59』

%p『am』或』pm』

%%'%'字元

向strftime()傳入乙個定製的格式字串,其中包含格式化指定(以及任何需要的斜線、冒號等),strftime()將返回乙個格式化的字串,表示datetime物件的資訊。

>>> dt

datetime.datetime(2020, 7, 6, 9, 55, 29, 615029)

>>> dt.strftime('%y/%m/%d %h:%m:%s')

'2020/07/06 09:55:29'

>>> dt.strftime('%i:%m %p')

'09:55 am'

>>> dt.strftime('%b of %y')

'july of 20'

>>> dt.strftime('%b of %y')

'july of 2020'

>>> datetime.datetime.strptime('july of 2020','%b of %y')

datetime.datetime(2020, 7, 1, 0, 0)

>>> datetime.datetime.strptime('july 6,2020','%b %d,%y')

datetime.datetime(2020, 7, 6, 0, 0)

import threading,time

print('start of program')

def takeanap():

time.sleep(3)

print('wake up!')

threadobj=threading.thread(target=takeanap)

threadobj.start()

print('end of program.')

# 以下為輸出:

start of program

end of program.

wake up! #暫停3秒後輸出

通常程式在檔案中最後一行**執行後終止(或呼叫sys.exit()),但該程式中有兩個執行緒:第乙個是最初的執行緒,從程式開始處開始,在print(『end of program.』)後結束;第二個執行緒是呼叫threadobj.start()時建立的,始於takeanap()函式的開始處,在takeanap()返回後結束。在程式的所有執行緒終止之前,python程式不會終止。

threadobj2=threading.thread(target=print,args=['cats','dogs','frogs'],kwargs=)

threadobj2.start()

# 以下為輸出

cats & dogs & frogs

使用subprocess模組中的popen()函式,可以使python程式啟動計算機中的其他程式。返回值是乙個popen物件,它有兩個有用的方法:poll()和wait()。

若啟動的程式程序在poll()呼叫時仍在執行就返回none;否則返回該程序的整數退出**。wait()方法將阻塞,直到啟動的程序終止;wait的返回值是程序的整數退出**。

python十五章 保持時間 計畫任務和啟動程式

使用計算機的時鐘排程程度,在特定的時間和日期執行。python內建time模組能讀取到系統時鐘的當前時間 time.time 返回utc時間的秒數 time.sleep 函式讓程式暫停一會 round now,4 將數字四捨五入到最接近的整數。將now捨入到小數點後四位數字。datetime.dat...

計畫任務 at和crontab

兩種計畫任務 at和crontab at 僅僅執行一次 執行at時,必須有atd這個服務。啟用atd服務的方法 etc init.d atd restart 設定開機啟動atd服務 chkconfig atd on 可以使用 etc at.allow與 etc at.deny這兩個檔案來進行at的使...

Python 時間相關與計畫任務

獲取今天 昨天和明天的日期 引入datetime模組 import datetime 計算今天的時間 today datetime.date.today 計算昨天的時間 yesterday today datetime.timedelta days 1 計算明天的時間 tomorrow today ...