Python基础—10-常用模块:time,calendar,datetime
#常用模块
time
-
sleep:休眠指定的秒数(可以是小数)
-
time:获取时间戳(从1970-01-01 00:00:00到此刻的秒数)
-
localtime:将一个时间戳转换为一个对象,对象中包含了所有日期时间信息
# 将时间戳转换为一个对象(包含年月日等信息) # 当不传参数,默认转换当前时间戳 local_time = time.localtime() print(local_time) # 通过下表获取 print(local_time[0]) # 通过属性名获取 print(local_time.tm_year)
-
mktime:将日期时间信息转换为时间戳
# 将日期时间信息转换为时间戳 # new_time = time.mktime(local_time) new_time = time.mktime((2018, 6, 20, 10, 32, 10, 2, 171, 0)) print(new_time)
-
strftime:将原则对象格式化显示
# 格式化显示,可以传递一个类似于元组的对象 print(time.strftime('%Y-%m-%d %H:%M:%S %w %W', local_time)) # 不传时间对象,默认转换当前时间 print(time.strftime('%D')) ''' %Y:年(4位) %y:年(2位) %m:月 %d:日 %D:月/日/年 %H:时(24) %I:时(12) %M:分 %S:秒 %w:星期(1~7) %W:本周是今年的第几周 '''
-
gmtime:将时间戳转换为localtime对象
# 将时间戳转换为localtime对象 print(time.gmtime(time.time())) # 不传参数默认转换当前时间戳 print(time.gmtime())
-
asctime:将localtime以特定的格式显示
# 将localtime格式化显示 print(time.asctime(local_time)) # 不传参数默认转换当前时间 print(time.asctime())
-
timezone:时区
# 返回0时区与当前时区相差的秒数 print(time.timezone)
calendar
-
使用
import calendar # 返回某一年的日历 c = calendar.calendar(2018, w=3, l=2, c=10, m=2) # print(c) # 返回某一年某一月的日历 m = calendar.month(2018, 6, w=3, l=2) # print(m) # 判断一个年份是否是闰年 print(calendar.isleap(2008)) # 返回两个年份之间的闰年数 [起始年,结束年) print(calendar.leapdays(2000, 2008)) # 返回2 print(calendar.leapdays(2000, 2009)) # 返回3
datetime
-
date
from datetime import date import time # 创建对象 d1 = date(2018, 6, 20) print(d1) d2 = date.today() print(d2) d3 = date.fromtimestamp(time.time()) print(d3) # 转换为标准格式字符串 s = d1.isoformat() print(s) # print(type(s)) # 日历显示:(年,第几周,星期) print(d1.isocalendar()) # 获取星期(1~7) print(d1.isoweekday()) # 获取星期(0~6) print(d1.weekday()) # 格式化 print(d1.strftime('%Y/%m/%d')) # 转换为类似于元组的形式(localtime) print(d1.timetuple())
-
time
from datetime import time # 创建对象 t = time(1, 2, 3) print(t) # 单独获取 print('时', t.hour) print('分', t.minute) print('秒', t.second) # 格式化显示 print(t.strftime('%H::%M::%S'))
-
datetime
from datetime import datetime import time # 创建对象 dt = datetime(2018, 6, 20, 14, 29, 30) print(dt) # 当前时间,当地带时区的时间 dt2 = datetime.now() print(dt2) # 不带时区的时间 dt3 = datetime.utcnow() print(dt3) # 将时间戳转换为日期时间 dt4 = datetime.fromtimestamp(time.time()) print(dt4) # 提取日期 d = dt.date() print(d) # print(type(d)) # 提取时间 print(dt.time()) # 转换为时间戳 print(dt.timestamp()) # 格式化显示 print(dt.strftime('%Y/%m/%d %H:%M:%S'))
-
timedelta
from datetime import datetime, timedelta d1 = datetime(2018, 6, 19, 10, 11, 12) d2 = datetime(2018, 6, 20, 12, 14, 18) # 得到时间差对象timedelta delta = d2 - d1 print(delta) print(type(delta)) delta2 = timedelta(days=2, hours=3, minutes=4, seconds=6) print(delta2) d3 = d1 + delta2 print(d3) # 天数 print(delta2.days) # 除天以外的秒数 print(delta2.seconds) # 总共的秒数 print(delta2.total_seconds())
模块使用
-
定义:模块就像工具包一样,里面有很多工具(函数、类等),使用时导入即可
-
分类:
- 标准库:random、sys、os、time
- 第三方:就是别人写好的一些模块,你自己拿来使用(使用pip即可进行安装)
- 自定义:自己写的
-
导入:
import random # 导入 import random as rdm # 导入后起别名 from random import randint # 指定导入 from random import randint as rint # 指定导入后起别名
as说明:
使用as起别名后,代码中只能使用别名。
可以避免冲突,可写简化书写
-
模糊导入:
from random import *
说明:导入random模块中 __ all __ 列表指定的内容,不建议使用(不易跟踪代码)
-
自定义模块
- 新建一个文件(不要与其他模块同名)
- 新建的文件名(除了后缀)就是模块名
- 导入的方式与官方的相同
- 文件名(模块名)就是命名空间,不同命名空间下的标识符可以相同
- 当使用多个模块下的相同标识符时,可以通过且别名或者通过命名空间进行区分
-
测试模块
- 每个模块中都有一个变量
__name__
,它表示当前的模块名 - 但是当该模块作为主文件启动时其值为
'__main__'
- 通过会通过下面的方式书写测试代码:
if __name__ == '__main__': print('for test')
- 每个模块中都有一个变量
-
包的使用
- 定义:多个模块放在一个目录下,这个目录下必须有一个
__init__.py
文件,那么这个目录就是一个包 - 说明:
__init__.py
文件是一个目录称为包的标志,即使内容为空- 可以简化使用者对包内容的导入复杂度
- 定义:多个模块放在一个目录下,这个目录下必须有一个
-
第三方模块的使用
- 安装工具:pip
- pip使用:
pip -h/--help # 查看帮助文档 pip install 包名 # 安装指定软件包 pip uninstall 包名 # 卸载指定软件包 pip list # 列表显示所有的安装包 pip show 包名 # 显示指定包的详情
- 说明:安装失败通常是安装目录没有权限或断网