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、第二个参数是以谁为相对路径(哪个谁就是第二个参数)