常用模块
time
-
sleep:睡眠
print('开始计时') # 睡眠指定的秒数,可以是小数 time.sleep(3) print('时间到')
-
time:获取时间戳
# 获取时间戳(从1970-01-01 00:00:00到此刻的秒数) t = time.time() # print(t)
-
localtime:将时间戳转换time.struct_time对象
# 将一个时间戳转换为日期时间对象(time.struct_time) # 当不传时间戳时,默认转换当前时间,包含时区 local_time = time.localtime() # 可以通过属性访问成员 print(local_time.tm_hour) # 也可以通过下标进行访问 print(local_time[0])
-
gmtime:将时间戳转换time.struct_time对象
# 将时间戳转换为日期时间对象(time.struct_time),不带时区 gt = time.gmtime() print(gt)
-
mktime:根据年月日等信息创建时间戳
# 根据年月日等信息,创建一个时间戳 t = time.mktime((2018, 11, 26, 11, 1, 50, 0, 330, 0)) print(t)
-
timezone:
# 0时区与当前系统时区相差的秒数 print(time.timezone)
-
strftime:对time.struct_time对象进行格式化
# 将一个时间转换为特定格式显示,默认转换当前时间 # print(time.asctime()) ''' 格式化处理 %Y:年(4位) %y:年(2位) %m:月 %d:日 %D:月/日/年 %H:时 %M:分 %S:秒 %w:星期 %W:本周是今年的第几周 ''' print(time.strftime('%D', local_time)) print(time.strftime('%Y-%m-%d %H:%M:%S', local_time))
calendar
-
示例:
import calendar # 返回一年的日历 c = calendar.calendar(2018, w=3, l=2, c=2, m=2) # print(c) # 返回某一年的某一月的日历 m = calendar.month(2018, 11) # print(m) # 判断闰年 print(calendar.isleap(2008)) # 两个年份之间的闰年数量,区间:[起始,结束) print(calendar.leapdays(2000, 2008)) print(calendar.leapdays(2000, 2009))
datetime
-
date
from datetime import date import time # 创建对象 d1 = date(2018, 11, 26) # print(d1, type(d1)) d2 = date.today() # print(d2) d3 = date.fromtimestamp(time.time()) # print(d3) # 标准格式显示 print(d1.isoformat()) # 日历显示:(年,第几周,星期) print(d2.isocalendar()) # 获取星期,标准格式1~7 print(d3.isoweekday()) # 获取星期,格式0~6 print(d3.weekday()) # 格式化显示 print(d3.strftime('%Y/%m/%d')) # 提取单独的年月日 print(d3.year, d3.month, d3.day) # 转换为time.struct_time对象 print(d3.timetuple())
-
time
from datetime import time # 创建对象 t = time(1, 2, 3) print(t, type(t)) print(str(t)) # 单独获取时、分、秒 print(t.hour, t.minute, t.second) # 格式化显示 print(t.strftime('%H::%M::%S'))
-
datetime
from datetime import datetime import time # 创建对象 dt = datetime(2018, 11, 26, 14, 53, 52) # 当前时间,带时区 dt2 = datetime.now() # 当前时间,不带时区 dt3 = datetime.utcnow() # 把时间戳转换 dt4 = datetime.fromtimestamp(time.time()) # print(dt4) # 提取日期 d = dt.date() print(d, type(d)) # 提取时间 t = dt.time() print(t, type(t)) # 转换成时间戳 print(dt.timestamp()) # 格式化显示 print(dt.strftime('%Y/%m/%d %H/%M/%S'))
-
timedelta
from datetime import timedelta, datetime td = timedelta(seconds=3600) td2 = timedelta(days=2) dt1 = datetime(2018, 11, 26, 15, 6, 10) dt2 = datetime(2018, 11, 25, 14, 6, 10) td3 = dt1 - dt2 # print(td3, type(td3)) dt3 = dt1 + td2 # print(dt3, type(dt3)) # 提取天数 print(td3.days) # 提取秒数(天以外的) print(td3.seconds) # 总共的秒数 print(td3.total_seconds())
模块使用
-
定义:模块就是一个工具包,里面可以包含函数、类库等,使用时导入即可。
-
分类:
- 标准库:os、sys、random等
- 自定义:自己根据需要书写的模块
- 第三方:就是别人写好的,可以直接使用,但是需要提前安装。
-
语法:
# 导入模块 import time # 导入模块中指定的内容 from time import sleep # 带入模块,并且起别名 import random as rdm # 导入模块中的指定内容,并且起别名 from random import randint as rint
-
as
- 使用as可以起别名,让导入的内容变得简单易记
- 使用as可以解决多个模块下标识符冲突问题
-
模糊导入
# 模糊导入,导入该模块中__all__列表指定的内容 # 不建议使用: # 1.不知道导入了什么内容 # 2.多个模块中有同名的内容无法处理 from random import *
-
自定义模块
- 新建一个文件(文件名不要与其他模块同名)
- 新建的文件名(除了后缀)就是模块名
- 导入的方式与其他模块一样
- 模块名(文件名)就是命名空间,同一模块下的标识符不能同名,不同的模块下的标识符可以同名
- 多个模块有相同标识符,可以直接导入模块,也可以使用as起别名
-
测试模块
# 直接执行此模块,值为__main__ # 被其他模块导入,值为模块名 # print('模块名:', __name__) # 模块测试内容可以这么写 # 当直接运行此模块时会执行,当被其他模块导入时不会执行 if __name__ == '__main__': print('模块测试内容')
-
包的使用
- 定义:具有
__init__.py
文件的多个模块的文件夹 - 说明:
__init__.py
是一个文件作为包的标志,即使该文件内容为空- 包文件可以减少导入的复杂度
- 定义:具有
-
第三方模块安装
- 工具:
pip
- 使用:
pip -h/--help # 查看帮助 pip install 包名==版本 # 安装指定的包(可以指定版本) pip install -r requirements.txt # 读取文件内容,根据内容进行安装 pip uninstall 包名 # 卸载指定的包 pip list # 查看已安装的包 pip show 包名 # 查看指定的包 pip freeze # 查看当前系统安装的包及版本 pip freeze > requirements.txt # 将系统环境冷冻
- 说明:
- 安装出错的原因通常是没有连网或安装目录没有写的权限
- 软件安装目录:
C:\Program Files\Python36\Lib\site-packages
- 若安装一直失败,可以先从
https://www.pypi.org
下载下来然后再安装,如:pip install xxx.whl
- 也可以使用pycharm进行软件包的安装
- 若觉得网速不好,可以改为国内的软件源
- 工具: