python中schedule模塊的簡單使用 || importlib.import_module動態導入模塊


 1 import schedule
 2 import time
 3 
 4 def start():      #定義一個函數
 5     print("****")
 6 
 7 
 8 if __name__ == '__main__':
 9     schedule.every(2).seconds.do(start)  #它的意思就是每隔2秒執行一次start函數
10     while True:  #這里就是定義一個死循環
11         schedule.run_pending()  //每次檢查一下兩秒間隔到了沒有
12         time.sleep(1)    //這個就是讓程序休眠幾秒

 

除了可以間隔多少秒執行一次函數,還可以間隔多少分鍾、小時

1、間隔兩小時

schedule.every(2).hours.do()

2、間隔兩分鍾

schedule.every(2).minutes.do()

 

 

importlib.import_module動態導入模塊

先看目錄結構

 

 項目xiang1里面有一個python包為a。a包里面有一個python文件aa.py和一個包b。b包里面有一個python文件bb.py和一個包c。c包里面有一個python文件cc.py

 

 

前提條件:

aa.py,bb.py,cc.py三個文件里面都有一個同樣的類

class People(object):

    def __init__(self,age,name='嘿嘿'):
        self.age=age
        self.name=name

 

1、把aa.py中People類導入到cc.py

import importlib

module = importlib.import_module('a.aa')  
classes = getattr(module,'People')
peo = classes(1)

print(peo.__dict__)

輸出結果

{'age': 1, 'name': '嘿嘿'}

 

 

注釋:

importlib.import_module這個方法是導入一個模塊,有兩種導入方式

1、絕對路徑導入

2、相對路徑導入(相對路徑的例子在下面)

這種導入方式用的是絕對路徑導入,絕對路徑只能包括包名或者python文件名。所以沒有寫成“xiang1.a.aa”而寫成了“a.aa”

 

getattr函數要傳兩個參數,一個是你要從哪個模塊里面導入哪個內容。(這兩個哪個,就分別對應它的兩個參數)

 

2、把bb.py中People類導入到cc.py

import importlib

module = importlib.import_module('a.b.bb')
classes = getattr(module,'People')
peo = classes(1)

print(peo.__dict__)
'''
輸出結果:
{'age': 1, 'name': '嘿嘿'}
'''

 

3、把bb.py中People類導入到aa.py

import importlib

module = importlib.import_module('.b.bb','a')
classes = getattr(module,'People')
peo = classes(1)

輸出結果還是上面那個

 

注釋:

這個就用到的是相對路徑導入,這個時候你的路徑名就是以   ‘./’   來開頭的。而且要傳兩個參數

1、第一個參數是相對路徑

2、第二個參數是以誰為相對路徑(哪個誰就是第二個參數)

 

importlib手冊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM