zoukankan      html  css  js  c++  java
  • python基础之模块(time,datetime,os,random)

    模块

    模块是什么?

    我们说一个函数就是一个功能,那么把一些常用的函数放在一个py文件中,这个文件就称之为模块,模块,就是一些列常用功能的集合体。

    为什么要使用模块?
    1. 开发效率高,减少重复代码

    2. 拿来主义

    人们常说的脚本是什么?

    脚本就是一个python文件

    模块的分类

    1.内置模块

    2.第三方模块

    3.自定义模块

    import

    第一次导入模块执行三件事

    1.创建一个以模块名命名的名称空间。

    2.执行这个名称空间(即导入的模块)里面的代码。

    3.通过模块名来使用模块中的功能

    导入多个模块
    import os,sys,json   # 这样写可以但是不推荐
    
    推荐写法
    
    import os
    import sys
    import json
    
    多行导入:易于阅读 易于编辑 易于搜索 易于维护。
    

    from ... import ...

    import 和from 的对比:

    import 全部导入

    from 指定功能导入

    from可以一行导入多个功能

    from json import dumps,loads,load,dump
    
    导入顺序

    模块的查找顺序

    内存中已经加载的模块->内置模块->sys.path路径中包含的模块

    time模块

    时间分类:
    1.时间戳     --- 用于计算的
    2.结构化时间 --- 给程序员查看使用 (命名元组)
    3.字符串时间 --- 给用户查看的
    t = time.time()   当前时间的时间戳
    print(time.localtime(t))   # 将时间戳转成结构化时间
    print(time.localtime()     # 将时间戳转成结构化时间,不写默认是当前时间戳
    print(time.mktime(t))    # 将结构化时间转成时间戳
    t = time.localtime()
    print(time.strftime("%y-%m-%d %H:%m:%S",t))  #将结构化时间转换成字符串时间
    str_time = "2019-9-1 12:23:06"
    print(time.strptime(str_time,"%Y-%m-%d %H:%M:%S")) # 将字符串时间转换成结构化时间
    print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))
    str_time = "2019-9-1 12:23:06"
    print(time.mktime(time.strptime(str_time,"%Y-%m-%d %H:%M:%S")))
    time模块还有个常用的功能休眠
    time.sleep(5)  5就是5秒,秒为单位
    

    img

    如果想将字符串时间转化为时间戳,或者时间戳变成字符串时间,必须经过结构化时间转换过去。

    datetime模块

    获取当前日期和时间
    from datetime import datetime
    print(datetime.now())
    '''
    结果:2019-12-04 21:07:48.734886
    '''
    
    获取指定日期和时间
    from datetime import datetime
    
    dt = datetime(2018,5,20,13,14)
    print(dt)
    
    '''
    结果:2018-05-20 13:14:00
    '''
    
    str与datetime的转换

    很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:

    from datetime import datetime
    
    t = datetime.strptime('2018-4-1 00:00','%Y-%m-%d %H:%M')
    print(t)
    '''
    结果: 2018-04-01 00:00:00
    '''
    
    # 如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过`strftime()`实现的,同样# 需要一个日期和时间的格式化字符串:
    
    ```
    from datetime import datetime
    now = datetime.now()
    print(now.strftime('%a, %b %d %H:%M'))
    Mon, May 05 16:28
    ```
    
    datetime加减

    对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用+-运算符,不过需要导入timedelta这个类:

    from datetime import datetime,timedelta
    print(datetime.now() - timedelta(days=123))
    print(datetime.now() + timedelta(days=500))
    结果:2019-09-21 06:51:41.265362
    2021-06-05 06:51:41.265362
    
    指定datetime时间
    current_time = datetime.datetime.now()
    print(current_time.replace(year=1977))  # 直接调整到1977年
    print(current_time.replace(month=1))  # 直接调整到1月份
    print(current_time.replace(year=1989,month=4,day=25))  # 1989-04-25 18:49:05.898601
    

    OS模块

    os -- 与操作系统做交互的
    import os
    1.文件:
    os.rename("旧名字","新名字")  # 重命名     ***
    os.remove("要删除的文件名")   # 删除文件    ***
    
    2.文件夹:
    os.makedirs("a/b/c/d/e/f")      # 递归创建文件夹   ***
    os.removedirs("a/b/c/d/e/f")    # 递归删除文件夹   ***
    os.mkdir("a")                   # 创建文件夹       ***
    os.rmdir("a")                   # 删除文件夹       ***
    print(os.listdir("C:Python26视频"))                     # 查看当前路径下所有的文件  ***
    
    3.路径:
    print(os.getcwd())   #获取当前工作路径   ***
    
    is 系列
    print(os.path.exists("C:Python_26day07"))   # 判断路劲是否存在  **
    print(os.path.isabs("day07"))       # 如果path是绝对路径,返回True  **
    print(os.path.isfile("C:Python_26day15lib.py"))   # 如果()中是一个存在的文件,返回True。否则返回False  ***
    print(os.path.isdir("C:Python_26day15"))  # 如果path是一个存在的目录,则返回True。否则返回False  ***
    
    重要:
    print(os.path.join("C:\User",'Python_26',"day15","lib.py"))  # 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 ***
    print(os.path.getsize("C:Python_26day15lib.py")) # 获取文件大小 ***
    
    4.其他:
    print(os.popen("dir").read())  # 给终端发送指令 **
    print(os.environ)  # 获取环境变量
    
    
    必会:
    os.getcwd()
    os.makedirs()
    os.removedirs()
    os.mkdir()
    os.rmdir()
    os.rename()
    os.remove()
    os.path.abspath()
    os.path.dirname()
    os.path.basename()
    os.path.join()
    os.path.isfile()
    os.path.isdir()
    os.path.getsize()
    

    random 模块

    import random
    print(random.random())  # 0 ~ 1之间的小数
    print(random.randint(1,5))  # 1- 5 之间的整数
    print(random.randrange(0,10,2))  # 随机偶数
    
    print(random.choice(lst))    # 从一个可迭代对象中获取一个随机数
    print(random.choices(lst,k=5)) # 从一个可迭代对象中获取多个随机数,会出现重复元素
    print(random.sample(lst,k=2))    # 从一个可迭代对象中获取多个随机数,不会出现重复元素
    
    lst = [1, 2, 3, 3, 4, 5, 6, 7, 8]
    lst.sort()
    random.shuffle(lst)     # 洗牌 打乱顺序
    print(lst)
    
    使用随机数实现一个5位(字母,数字)的验证码:
    random chr() ord()  ascii码表
    1.先去查看ascii码表
    发现 65 - 90 是大写字母,从65- 90之间随机获取一个数字通过chr方法获取数字对应的内容
    发现 97 -122 是小写字母,从97 -122之间随机获取一个数字通过chr方法获取数字对应的内容
    2.使用for循环执行5圈,将获取的内容累加起来,最后输出
    import random
    # 1X3Y3ZX
    def make_code(size=7):
        res = ''
        for i in range(size):
            # 循环一次则得到一个随机字符(字母/数字)
            s = chr(random.randint(65, 90))
            num = str(random.randint(0, 9))
            # num = chr(random.randint(97, 122))
            res += random.choice([s, num])
        return res
    
    res=make_code()
    print(res)
    
    import  random
    print(ord("6"))
    ord()必须是字符串形式,查询数字或者字母(字符串形式)在ascill码表中的位置
    
  • 相关阅读:
    Springboot 配置Slf4j + Logback
    一步一步创建SpringCloud项目(二)—— 使用feign和ribbon调用微服务
    一步一步创建SpringCloud项目(一)——创建项目父工程、Eureka
    rabbitmq使用笔记
    docker部署rabbitmq
    Maven pom文件中dependency scope用法
    MySQL事务隔离级别总结
    docker安装redis
    RabbitMQ的消息确认机制
    centos7.6 下安装docker,docker compose
  • 原文地址:https://www.cnblogs.com/zzsy/p/12229682.html
Copyright © 2011-2022 走看看