常用模块
time
sleep:休眠指定的秒数(可以是小数)
time:获取时间戳
# 获取时间戳(从1970-01-01 00:00:00到此刻的秒数) t = time.time() print(t)
localtime:将时间戳转换为对象
# 将一个时间戳转换为日期时间(time.struct_time)对象 local_time = time.localtime() # print(local_time) # print(local_time.tm_year) # print(local_time[0])
mktime:根据年月日等信息转换为时间戳
# 根据年月日时分秒等转换为时间戳 new_time = time.mktime((2018, 7, 31, 10, 37, 38, 1, 212, 0)) print(new_time)
gmtime:功能同localtime
# 将时间戳转换time.struct_time,不包含时区 gt = time.gmtime() # print(gt)
timezone:时差
# 0时区与当前时区相差的秒数 print(time.timezone)
strftime:将time.struct_time对象格式化显示
# 格式化显示 # print(time.strftime('%Y-%m-%d %H:%M:%S', local_time)) print(time.strftime('%D', local_time)) ''' %Y:年(4位) %y:年(2位) %m:月 %d:日 %D:月/日/年 %H:时 %M:分 %S:秒 %w:星期(1~7) %W:本周是今年的第几周 ''' # 特定的显示格式 print(time.asctime())
calendar
使用
import calendar # 返回一年的日历 c = calendar.calendar(2018, w=2, l=2, c=2, m=2) # print(c) # 返回某年的的某月的日历 m = calendar.month(2018, 7) # 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, 7, 31) # print(d1) d2 = date.today() # print(d2) d3 = date.fromtimestamp(time.time()) # print(d3) # 标准格式 print(d1.isoformat()) # 日历显示,格式:(年,日,星期) print(d2.isocalendar()) # 获取星期,标准格式1~7 print(d2.isoweekday()) # 获取星期,格式0~6 print(d2.weekday()) # 格式化显示 print(d3.strftime('%Y/%m/%d')) # 转换为包含详细信息的对象(time.struct_time) print(d3.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, 7, 31, 14, 21, 22) # print(dt) # print(type(dt)) # 本地当前时间,带时区 dt2 = datetime.now() # print(dt2) # 0时区时间,不带时区 dt3 = datetime.utcnow() # print(dt3) # 根据时间戳转换 dt4 = datetime.fromtimestamp(time.time()) # print(dt4) # 提取日期 d = dt.date() print(d) print(type(d)) # 提起时间 t = dt.time() print(t) print(type(t)) # 转换为时间戳 print(dt.timestamp()) # 格式化显示 print(dt.strftime('%Y/%m/%d %H/%M/%S'))
timedelta
from datetime import datetime, timedelta d1 = datetime(2018, 7, 31, 14, 31, 32) d2 = datetime(2018, 7, 31, 14, 15, 32) delta = d1 - d2 print(delta) print(type(delta)) # delta2 = timedelta(days=1, hours=1) delta2 = timedelta(seconds=-3600) print(delta2) d3 = d2 + delta2 print(d3) # 提取天数 print(delta2.days) # 提取除天以外的秒数 print(delta2.seconds) # 总共的秒数 print(delta2.total_seconds())
模块使用
定义:模块就像工具包一样,里面包含函数、类等,使用时倒入即可。
分类:
- 标准库:random、os、sys、time等
- 自定义:自己根据需要书写的模块
- 第三方:就是别人写好的模块,自己可以直接使用,但是需要(pip)进行安装
语法:
# 导入模块 import time # 导入模块中指定的内容 from time import sleep # 导入模块并起别名,只能使用别名 import random as rdm # 导入模块的指定内容,并起别名 from random import randint as rint
as:
- 使用as可以起别名,让导入的所需内容简单易记
- 使用as可以解决多个模块下的标识符冲突问题
模糊导入:
# 模糊导入,会导入该模块下__all__指定的内容 # 不建议使用,因为你不知道导入了什么内容 from random import *
自定义模块
- 新建一个文件(文件名不要与其他模块相同)
- 新建的文件名(除了后缀)就是模块名
- 导入模块的方式与官方的一样
- 模块名(文件名)就是命名空间,同一模块下的标识符不能同名,不同模块下的标识符可以同名
- 当多个模块下的标识符同名时,可以直接导入模块,也可以导入后起别名
测试模块
- 每个模块中都有一个变量
__name__
,表示当前的模块名 - 但是当前模块作为启动文件时,其值为
__main__
- 通常我们这样写测试代码:
if __name__ == '__main__': print('测试')
- 每个模块中都有一个变量
包的使用
- 定义:多个模块放在同一个目录下,这个目录下必须有一个文件
__init__.py
,这个目录就是一个包 - 说明:
__init__.py
文件是一个目录作为包的标志,即使该文件内容为空- 导入时可以简化模块导入的复杂度
- 定义:多个模块放在同一个目录下,这个目录下必须有一个文件
第三方模块安装
- 工具:
pip
- 使用:
pip -h/--help # 查看帮助文档 pip install 包名==版本 # 安装指定的包 pip install -r 文件 # 安装文件中指定包 pip uninstall 包名 # 卸载指定的包 pip list # 列表展示已安装的包 pip show 包名 # 查看指定的包信息 pip freeze # 冷冻当前的环境
- 说明:
- 软件包安装目录:
python安装目录\Lib\site-packages
- 安装失败通常是因为没有权限或断网。
- 工具:
虚拟环境
- 为什么使用虚拟环境?
- 在一个环境中不同软件依赖一个包的不同版本,为了进行环境隔离就出现了虚拟环境。
- 安装工具:
virtualenv
pip install virtualenv
- 创建虚拟环境:
virtualenv 虚拟环境目录
- 激活虚拟环境:
- 运行:
虚拟环境目录\Scripts\activate.bat
- 运行:
- 退出虚拟环境:
- 运行:
虚拟环境目录\Scripts\deactivate.bat
- 运行:
- 快速复制一个虚拟环境:
- 冷藏原有的虚拟环境:
pip freeze > requeirements.txt
- 创建一个新的虚拟环境:
virtualenv 虚拟环境名
- 激活虚拟环境:
虚拟环境目录\Scripts\activate.bat
- 安装依赖:
pip install -r requirements.txt
- 冷藏原有的虚拟环境: