Python的schedule模块与sys.argv的使用

main函数使用sys.argv传入多个参数

在运维过程中,有些时候需要向main函数中传递参数,以方便运维与测试,那么怎么向main函数中传入多个参数呢,下面以python3中的main函数为例,简单讲一下。首先我们需要import sys,sys是python3的一个标准库,也就是一个官方的模块。封装了一些系统的信息和接口,然后再说说argv这个变量。「argv」是「argument variable」参数变量的简写形式,一般在命令行调用的时候由系统传递给程序。这个变量其实是一个List列表,argv[0] 一般是被调用的脚本文件名或全路径,和操作系统有关,argv[1]和以后就是传入的数据了。

import sys

#传入3个参数,具体操作根据个人情况

def main(argv):
  print(argv[1])
  print(argv[2])
  print(argv[3])

if __name__ == "__main__":
  main(sys.argv)

接下来直接执行python main.py  1 2 3,,将会得到1 2 3的打印。

(PS:最后说明一下,sys.argv传入的参数为字符串类型,如果想做一些条件判断的话需要转成你所需要的数据类型。)

使用schedule模块定时执行任务

python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务

import schedule

import time

 

def job():

    print("I'm working...")

 

schedule.every(10).minutes.do(job)

schedule.every().hour.do(job)

schedule.every().day.at("10:30").do(job)

schedule.every(5).to(10).days.do(job)

schedule.every().monday.do(job)

schedule.every().wednesday.at("13:15").do(job)

 

while True:

    schedule.run_pending()

    time.sleep(1)

  

上面的意思就是:

每隔十分钟执行一次任务

每隔一小时执行一次任务

每天的10:30执行一次任务

每隔5到10天执行一次任务

每周一的这个时候执行一次任务

每周三13:15执行一次任务

run_pending:运行所有可以运行的任务

 

当然,如果函数中带有参数怎么办呢?

很简单,如下所示:

import schedule
import time

 
def job(name):
    print("her name is : ", name)

name = xiaona
schedule.every(10).minutes.do(job, name)
schedule.every().hour.do(job, name)
schedule.every().day.at("10:30").do(job, name)
schedule.every(5).to(10).days.do(job, name)
schedule.every().monday.do(job, name)
schedule.every().wednesday.at("13:15").do(job, name)

 
while True:
    schedule.run_pending()
    time.sleep(1)

  

posted @ 2024-08-13 20:16  鲸鱼的海老大  阅读(44)  评论(0)    收藏  举报