Python时间模块和第三方模块的的安装。

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进行软件包的安装
  • 若觉得网速不好,可以改为国内的软件源