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)