在Python里面,比如你想定期去爬一個(gè)網(wǎng)頁,或者做運(yùn)維的同學(xué)想每天12點(diǎn)去定時(shí)download一個(gè)文件,或者定時(shí)去掃描一些服務(wù)器,甚至老板的需求不停的變可能是,每隔5分鐘,或者每小時(shí)的整點(diǎn)10分,每周每月都有一些定時(shí)任務(wù)
創(chuàng)新互聯(lián)建站10多年成都企業(yè)網(wǎng)站定制服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站定制及推廣,對軟裝設(shè)計(jì)等多個(gè)領(lǐng)域擁有豐富的網(wǎng)站運(yùn)維經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
用Python怎么破很簡單,下面這個(gè)程序輕松搞定
我們先從一個(gè)最簡單的例子說,假設(shè)我們是每分種的第10秒,去執(zhí)行一個(gè)任務(wù)去打印一下當(dāng)前的目錄
1).window下是dir命令,linux是ls
我們用platform這個(gè)模塊來判斷一下操作系統(tǒng)
import platform
os_platfrom=platform.platform()
if os_platfrom.startswith('Darwin'):
print'this is mac os system'
os.system('ls')
elif os_platfrom.startswith('Window'):
print'this is win system'
os.system('dir')
2).如何定時(shí)執(zhí)行
a.我們先獲取當(dāng)前的時(shí)間
now=datetime.datetime.now()
假設(shè)當(dāng)前時(shí)間是2017-02-09 20:19:47.555000
b.然后我們輸入一個(gè)你要定時(shí)執(zhí)行的target時(shí)間
比如你是x分10秒的時(shí)候執(zhí)行sched_Timer=datetime.datetime(x,x,x,x,x,10)
前面的x是并不重要(只要最后是10秒就行了),我們就把目標(biāo)時(shí)間設(shè)的比當(dāng)前晚一點(diǎn)即可:
sched_Timer=datetime.datetime(2017,2,9,20,20,10)
c.好當(dāng)時(shí)間到了20:20:10的時(shí)候要運(yùn)行我們的程序
如何定時(shí)到了呢,很簡單用
if now==sched_Timer:
'run Task'
d.那么如何讓時(shí)間在下一分鐘10秒繼續(xù)執(zhí)行呢,也很簡單用timedelta()
datetime.timedelta(minutes=1)把target時(shí)間往后增加一分鐘
sched_Timer=sched_Timer+datetime.timedelta(minutes=1)
然后外邊用個(gè)while 死循環(huán)hold住就可以了
同樣的這個(gè)代碼也可以擴(kuò)展,把minutes=1改成hours=1就變成了每個(gè)小時(shí)定時(shí)任務(wù),改成days=1就變成每天的定時(shí)任務(wù)
作者:菜鳥學(xué)python 鏈接: 來源:簡書 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。以下是這篇文章的評論,我覺得還是不錯(cuò)的,也解決上面的問題時(shí)間不匹配的問題,特地貼過來來看看按樓主提供的方法嘗試了下,樓主提供的一種定時(shí)思路是可行的,不過在具體執(zhí)行過程中“if now==sched_Timer:”這里可能會(huì)有點(diǎn)問題。
在while循環(huán)中,datetime.datetime.now()獲取的時(shí)間是“2017-8-10 17:22:54.123456”這種格式的,而樓主設(shè)置的時(shí)間格式 print 出來默認(rèn)是“2017-8-10 17:22:54”,可能是程序運(yùn)行時(shí)間的因素,實(shí)際運(yùn)行過程中判定二者相等,進(jìn)而執(zhí)行if內(nèi)的語句的情況很少出現(xiàn)(我這里嘗試了半個(gè)下午,沒有一次判定二者相等)。
下面是我自己稍作修改后自行使用的:
import time
sched_time = datetime.datetime(2017, 8, 10, 17, 31, 0)
loopflag = 0
while True:
now = datetime.datetime.now()
if sched_time
loopflag = 1
time.sleep(1)
if loopflag == 1:
func() #此處為你自己想定時(shí)執(zhí)行的功能函數(shù)
loopflag = 0
返回none。python調(diào)用函數(shù)沒有執(zhí)行rtuen會(huì)返回none。首先,Return的用法,調(diào)用函數(shù)的時(shí)候,如果沒有執(zhí)行return命令(或return命令未接收數(shù)據(jù)),默認(rèn)會(huì)返回none。
test();//后邊加個(gè)括號
=========================
這種語法上也并沒有說確確的錯(cuò)誤!
不同的編譯會(huì)有所不同,一般會(huì)提示...
不過大多編譯會(huì)把它當(dāng)成申明給跳過了,因?yàn)槟銢]加括號,并沒調(diào)用函數(shù)(編譯時(shí)大多也會(huì)提示一下的)
本文題目:python不執(zhí)行函數(shù) python函數(shù)不正確
URL鏈接:http://m.rwnh.cn/article12/hiisgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站營銷、網(wǎng)站策劃、外貿(mào)網(wǎng)站建設(shè)、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)