Python编程快速上手15章保持时间、计划任务和启动程序

time 模块
time.time()函数
Unix 纪元是编程中经常参考的时间:1970 年 1 月 1 日 0 点,即协调世界时UTC)。time.time()函数返回自那一刻以来的秒数,是一个浮点值(回想一下,浮点值只是一个带小数点的数)。

>>> import time
>>> time.time()
1425063955.068649

time.sleep()函数
如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数。

数字四舍五入
如果省略第二个参数,round()将数字四舍五入到最接近的整数

>>> import time
>>> now = time.time()
>>> now
1425064108.017826
>>> round(now, 2)
1425064108.02
>>> round(now, 4)
1425064108.0178
>>> round(now)
1425064108

datetime 模块
datetime 模块有自己的datetime 数据类型。datetime 值表示一个特定的时刻。

>>> import datetime
>>> datetime.datetime.now()
datetime.datetime(2015, 2, 27, 11, 10, 49, 55, 53)
>>> dt = datetime.datetime(2015, 10, 21, 16, 29, 0)
>>> dt.year, dt.month, dt.day
(2015, 10, 21)
>>> dt.hour, dt.minute, dt.second
(16, 29, 0)

Unix 纪元时间戳可以通过 datetime.datetime.fromtimestamp(),转换为 datetime
对象。

>>> datetime.datetime.fromtimestamp(1000000)
datetime.datetime(1970, 1, 12, 5, 46, 40)
>>> datetime.datetime.fromtimestamp(time.time())
datetime.datetime(2015, 2, 27, 11, 13, 0, 604980)

timedelta 数据类型
datetime 模块还提供了 timedelta 数据类型,它表示一段时间。

>>> delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
>>> delta.days, delta.seconds, delta.microseconds
(11, 36548, 0)
>>> delta.total_ _seconds()
986948.0
>>> str(delta)
'11 days, 10:09:08'

要计算今天之后 1000
天的日期

>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2015, 2, 27, 18, 38, 50, 636181)
>>> thousandDays = datetime.timedelta(days=1000)
>>> dt + thousandDays
datetime.datetime(2017, 11, 23, 18, 38, 50, 636181)

利用+和-运算符,timedelta 对象与 datetime 对象或其他 timedelta 对象相加或相
减。利用*和/运算符,timedelta 对象可以乘以或除以整数或浮点数。

将 datetime 对象转换为字符串strftime()

>>> oct21st = datetime.datetime(2015, 10, 21, 16, 29, 0)
>>> oct21st.strftime('%Y/%m/%d %H:%M:%S')
'2015/10/21 16:29:00'
>>> oct21st.strftime('%I:%M %p')
'04:29 PM'
>>> oct21st.strftime("%B of '%y")
"October of '15"

将字符串转换成 datetime 对象

 >>> datetime.datetime.strptime('October 21, 2015', '%B %d, %Y')
datetime.datetime(2015, 10, 21, 0, 0)
>>> datetime.datetime.strptime('2015/10/21 16:29:00', '%Y/%m/%d %H:%M:%S')
datetime.datetime(2015, 10, 21, 16, 29)
>>> datetime.datetime.strptime("October of '15", "%B of '%y")
datetime.datetime(2015, 10, 1, 0, 0)
>>> datetime.datetime.strptime("November of '63", "%B of '%y")
datetime.datetime(2063, 11, 1, 0, 0)

多线程

import threading, time
print('Start of program.')
def takeANap():
	time.sleep(5)
print('Wake up!')
threadObj = threading.Thread(target=takeANap)
threadObj.start()
print('End of program.')

从 Python 启动其他程序
在 Windows 计算机上,在交互式环境中输入以下代码:

>>> import subprocess
>>> subprocess.Popen('C:\\Windows\\System32\\calc.exe')
<subprocess.Popen object at 0x0000000003055A58>

在 Ubuntu Linux 上,可以输入以下代码:

>>> import subprocess
>>> subprocess.Popen('/usr/bin/gnome-calculator')
<subprocess.Popen object at 0x7f2bcf93b20>

可以认为 poll()方法是问你的朋友,她是否执行完毕你给她的代码。如果这个
进程在 poll()调用时仍在运行,poll()方法就返回 None。如果该程序已经终止,
它会返回该进程的整数退出代码。
wait()方法就像是等着你的朋友执行完她的代码,然后你继续执行你的代码。
wait()方法将阻塞,直到启动的进程终止。如果你希望你的程序暂停,直到用户完成
与其他程序,这非常有用。

>>> calcProc = subprocess.Popen('c:\\Windows\\System32\\calc.exe')
>>> calcProc.poll() == None
True
>>> calcProc.wait()
0
>>> calcProc.poll()
0

向 Popen()传递命令行参数

>>> subprocess.Popen(['C:\\Windows\\notepad.exe', 'C:\\hello.txt'])
<subprocess.Popen object at 0x00000000032DCEB8>

运行其他 Python 脚本

>>> subprocess.Popen(['C:\\python34\\python.exe', 'hello.py'])
<subprocess.Popen object at 0x000000000331CF28>

用默认的应用程序打开文件
在 Windows上,这是 start 程序。在OS X 上,这是open 程序。在 Ubuntu Linux 上,这是see 程序。

>>> fileObj = open('hello.txt', 'w')
>>> fileObj.write('Hello world!')
12
>>> fileObj.close()
>>> import subprocess
>>> subprocess.Popen(['start', 'hello.txt'], shell=True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值