python常用模块:时间模块

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

猜你喜欢

转载自blog.csdn.net/weixin_43226574/article/details/85713264