时间处理
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。
时间间隔是以秒为单位的浮点小数。
每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。
Python 的 time 模块下有很多函数可以转换常见日期格式。
如函数time.time()用于获取当前时间戳:
#引入时间包
import time
time_line = time.time()
#获取从1970年到现在的秒数
#1970年操作系统出现
print('当前的时间戳为:{}'.format(time_line))
运行结果为:
当前的时间戳为:1530533650.9563801
在js中 0 代表周日,1 - 6代表周一到周六;
而在python中 0代表的是周一,6代表的是周日
import time
# time.struct_time struct 结构体
#获取当前时间 localtime 本地
time1 = time.localtime()
print('本地时间为:{}'.format(time1))
#获取从1970年开始往后指定的秒数所对应的时间
time2 = time.localtime(1530490000)
print('所对应的时间为:{}'.format(time2))
运行结果为:
本地时间为:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=20, tm_min=14, tm_sec=51, tm_wday=0, tm_yday=183, tm_isdst=0)
所对应的时间为:time.struct_time(tm_year=2018, tm_mon=7, tm_mday=2, tm_hour=8, tm_min=6, tm_sec=40, tm_wday=0, tm_yday=183, tm_isdst=0)
我们平时在网上购物的时候,用电脑登录淘宝之后关掉网页短时间内再打开是不会需要你再次登录的,而如果你间隔时间比较长的话你就需要重新登录一下账户,这里用到的就是时间处理,检测你最后一次登录的时间和当前时间的间隔是多少而决定你是否需要再次输入账户密码登录淘宝网站。我写了一个简单的例子:
import time
# access_token
# 系统怎么判断登陆过期?
time3 = time.localtime(1530498073)
if time.localtime()<time3 :
print('没过期')
else :
print('已过期')
运行结果为:
已过期
设置自定义时间
time4 = time.strftime('%y-%m-%d %H:%M:%S',time.localtime())
print(time4)
运行结果为:
18-07-02 20:13:29
相信大家都知道定时发送邮件的功能,设置一个指定的时间让他自动发送邮件,我写了一个简单的if判断的例子
#让它一直循环
while True :
#获取当前时间
time5 = time.localtime()
print('检测')
if time5.tm_year == 2018 and time5.tm_mon == 8 and time5.tm_mday == 2 and time5.tm_hour == 19 :
print('发送邮件')
#发送邮件之后用break跳出循环
break
#线程休眠 sleep 睡觉
# 每3秒钟检测一次
time.sleep(3)
在上面我们引用的是time包,我们再引用一下datetime包
首先我们写一个获取当前时间的代码:
import datetime
#获取今天的时间
date1 = datetime.datetime.today()
print(date1)
#获取现在的时间
date2 = datetime.datetime.now()
print(date2)
运行的结果为:
2018-07-02 20:26:45.419533
2018-07-02 20:26:45.419533
我们用strftime转换一下时间格式:
import datetime
#获取现在的时间
date2 = datetime.datetime.now()
print(date2)
# %y 获取年 %m 获取月 %d 获取日
# strftime 不能进行中文编码
date3 = date2.strftime('%yyear%mmonth%dday')
# 但是可以将得到的结果进行转换
print(date3.replace('year','年').replace('month','月').replace('day','日'))
运行结果为:
2018-07-02 20:31:51.539042
18年07月02日
用datetime设置一下时间间隔:
import datetime
# 设置时间间隔
date4 = datetime.timedelta(days=1, hours= 12)
print(date4)
# 从现在往后 推迟指定的时间
date5 = datetime.datetime.now() +date4
print(date5)
运行结果为:
1 day, 12:00:00
2018-07-04 08:34:12.477103
再来练习一下:
date5 = datetime.datetime.today()
# 只获取当前的日期
date6 = date5.date()
print(date6)
print('{}年{}月{}日'.format(date6.year,date6.month,date6.day))
# 只获取当前的时间
date7 = date5.time()
print(date7)
print('{}时{}分{}秒'.format(date7.hour ,date7.minute ,date7.second))
# 获取当前时间戳 time_line
print('当前的时间戳为{}'.format(date5.timestamp()))
运行结果为:
2018-07-02
2018年7月2日
20:38:01.625210
20时38分1秒
当前的时间戳为1530535081.62521
日历
import calendar
calen = calendar.Calendar()
print(calen)
# iterable 可迭代的
ca1 = calen.iterweekdays()
for x in ca1 :
print(x)
运行结果为:
<calendar.Calendar object at 0x004862B0>
0
1
2
3
4
5
6
import calendar
calen = calendar.Calendar()
# 迭代指定的月份 0表示非本月日期
ca1 = calen.itermonthdays(year=2018,month=7)
for x in ca1 :
print(x)
运行结果为:
0
0
0
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
0
0
0
0
import calendar
calen = calendar.Calendar()
# 迭代指定的月份 获取的元组对象有两个值
# 值1:是否属于本月 0表示非本月
# 值2:日子对应的星期 0是周一 6是周日
ca1 = calen.itermonthdays2(year=2018 , month= 7)
for x in ca1 :
print(x)
运行结果为:
(0, 0)
(0, 1)
(0, 2)
(0, 3)
(0, 4)
(0, 5)
(1, 6)
(2, 0)
(3, 1)
(4, 2)
(5, 3)
(6, 4)
(7, 5)
(8, 6)
(9, 0)
(10, 1)
(11, 2)
(12, 3)
(13, 4)
(14, 5)
(15, 6)
(16, 0)
(17, 1)
(18, 2)
(19, 3)
(20, 4)
(21, 5)
(22, 6)
(23, 0)
(24, 1)
(25, 2)
(26, 3)
(27, 4)
(28, 5)
(29, 6)
(30, 0)
(31, 1)
(0, 2)
(0, 3)
(0, 4)
(0, 5)
(0, 6)
import calendar
calen = calendar.Calendar()
# 迭代指定月份的日历 格式为yyyy-mm-dd
ca1 = calen.itermonthdates(year=2018 , month= 7)
for x in ca1 :
print(x)
运行结果为:
2018-06-25
2018-06-26
2018-06-27
2018-06-28
2018-06-29
2018-06-30
2018-07-01
2018-07-02
2018-07-03
2018-07-04
2018-07-05
2018-07-06
2018-07-07
2018-07-08
2018-07-09
2018-07-10
2018-07-11
2018-07-12
2018-07-13
2018-07-14
2018-07-15
2018-07-16
2018-07-17
2018-07-18
2018-07-19
2018-07-20
2018-07-21
2018-07-22
2018-07-23
2018-07-24
2018-07-25
2018-07-26
2018-07-27
2018-07-28
2018-07-29
2018-07-30
2018-07-31
2018-08-01
2018-08-02
2018-08-03
2018-08-04
2018-08-05
最后我们做一个文本日历吧:
先做一个7月的文本日历:
import calendar
#获取文本日历
calen = calendar.TextCalendar()
# 给文本日历指定月份
calen.prmonth(theyear=2018,themonth=7)
print(calen)
运行结果为:
July 2018
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
<calendar.TextCalendar object at 0x002562B0>
做了单月的文本日历之后我们来做一下2018年的文本日历吧:
import calendar
#获取文本日历
calen = calendar.TextCalendar()
# 给文本日历指定年份
calen.pryear(theyear=2018)
print(calen)
运行结果为:
2018
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 1 2 3 4
8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11
15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18
22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25
29 30 31 26 27 28 26 27 28 29 30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 1 2 3 4 5 6 1 2 3
2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10
9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17
16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24
23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30
30
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 1 2 3 4 5 1 2
2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9
9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16
16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23
23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30
30 31
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 1 2
8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
31
<calendar.TextCalendar object at 0x004262B0>
os操作
在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块。
os模块获取电脑的相关信息,并且有很强大的文件及文件夹操作能力,所以在操作文件或者文件夹的时候,首先要引入os模块。
首先我们先用os模块获取一下电脑的基本信息:
import os
cpu_count = os.cpu_count()
print(cpu_count)
name = os.name
# nt代表Windows操作系统 Linux为posix
print ('操作系统的名字是:{}'.format(name))
运行结果为:
4
操作系统的名字是:nt
我们还可以用os来验证一个文件是否存在:
import os
# exists 存在 path 路径
# 相对路径
result = os.path.exists('os操作.py')
if result:
print('存在')
else:
print('不存在')
print(result)
运行结果为:
存在
True
这里的相对路径指的就是对于我们现在的文件来说其他的文件是在哪个路径,它会先在当前文件夹的路径里面找。
绝对路径就是我们平时说的c盘的哪个文件夹,他的路径是固定的。
今天就先分享到这里吧,我以后还会持续更新的=-=