设为首页 收藏本站
查看: 544|回复: 0

[经验分享] Python

[复制链接]

尚未签到

发表于 2017-4-29 14:22:28 | 显示全部楼层 |阅读模式
  转载from  http://www.pythontab.com/html/2013/pythonjichu_0119/146.html
  无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务,注意咯:本篇所讲是python3版本的实现,在python2版本中的实现略有不同,有时间会再写一篇以便大家区分。

1.计算明天和昨天的日期

#! /usr/bin/env python
#coding=utf-8
# 获取今天、昨天和明天的日期
# 引入datetime模块
import datetime  
#计算今天的时间
today = datetime.date.today()
#计算昨天的时间  
yesterday = today - datetime.timedelta(days = 1)
#计算明天的时间
tomorrow = today + datetime.timedelta(days = 1)  
#打印这三个时间
print(yesterday, today, tomorrow)
 

 

2.计算上一个的时间
  方法一:

#! /usr/bin/env python
#coding=utf-8
# 计算上一个的时间
#引入datetime,calendar两个模块
import datetime,calendar
last_friday = datetime.date.today()  
oneday = datetime.timedelta(days = 1)  
while last_friday.weekday() != calendar.FRIDAY:  
last_friday -= oneday  
print(last_friday.strftime('%A, %d-%b-%Y'))
  
  方法二:借助模运算寻找上一个星期五

#! /usr/bin/env python
#coding=utf-8
# 借助模运算,可以一次算出需要减去的天数,计算上一个星期五
#同样引入datetime,calendar两个模块
import datetime  
import calendar  
today = datetime.date.today()  
target_day = calendar.FRIDAY  
this_day = today.weekday()  
delta_to_target = (this_day - target_day) % 7
last_friday = today - datetime.timedelta(days = delta_to_target)  
print(last_friday.strftime("%d-%b-%Y"))
  

3.计算歌曲的总播放时间
  

#! /usr/bin/env python
#coding=utf-8
# 获取一个列表中的所有歌曲的播放时间之和  
import datetime  
def total_timer(times):  
td = datetime.timedelta(0)  
duration = sum([datetime.timedelta(minutes = m, seconds = s) for m, s in times], td)  
return duration  
times1 = [(2, 36),  
(3, 35),  
(3, 45),  
]  
times2 = [(3, 0),  
(5, 13),  
(4, 12),  
(1, 10),  
]  
assert total_timer(times1) == datetime.timedelta(0, 596)  
assert total_timer(times2) == datetime.timedelta(0, 815)  
print("Tests passed.\n"
"First test total: %s\n"
"Second test total: %s" % (total_timer(times1), total_timer(times2)))
   

4.反复执行某个命令


#! /usr/bin/env python

#coding=utf-8

# 以需要的时间间隔执行某个命令 

    

import time, os 


    

def re_exe(cmd, inc = 60): 


    while True: 


        os.system(cmd); 


        time.sleep(inc) 


    

re_exe("echo %time%", 5)





5.定时任务


#! /usr/bin/env python

#coding=utf-8

#这里需要引入三个模块

import time, os, sched 


    

# 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 

# 第二个参数以某种人为的方式衡量时间 

schedule = sched.scheduler(time.time, time.sleep) 


    

def perform_command(cmd, inc): 


    os.system(cmd) 


        

def timming_exe(cmd, inc = 60): 


    # enter用来安排某事件的发生时间,从现在起第n秒开始启动 


    schedule.enter(inc, 0, perform_command, (cmd, inc)) 


    # 持续运行,直到计划时间队列变成空为止 


    schedule.run() 


        

    

print("show time after 10 seconds:") 


timming_exe("echo %time%", 10)





6.利用sched实现周期调用

#! /usr/bin/env python

#coding=utf-8

import time, os, sched 


    

# 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 

# 第二个参数以某种人为的方式衡量时间 

schedule = sched.scheduler(time.time, time.sleep) 


    

def perform_command(cmd, inc): 


    # 安排inc秒后再次运行自己,即周期运行 


    schedule.enter(inc, 0, perform_command, (cmd, inc)) 


    os.system(cmd) 


        

def timming_exe(cmd, inc = 60): 


    # enter用来安排某事件的发生时间,从现在起第n秒开始启动 


    schedule.enter(inc, 0, perform_command, (cmd, inc)) 


    # 持续运行,直到计划时间队列变成空为止 


    schedule.run() 


        

    

print("show time after 10 seconds:") 


timming_exe("echo %time%", 10)

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-370875-1-1.html 上篇帖子: Python学习笔记一(数据类型、变量) 下篇帖子: Python的Self到底是虾米东东?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表