• CSIC_716_20191116【常用模块的用法 time ,datetime, random, os, sys, hashlib】


    import time 
    import datetime
    import os
    import sys
    import random 
    import hashlib
    

    time模块

    时间戳(Timestamp)

    time.time( ) 时间戳是从1970年1月1日0时0分0秒开始计数,是以秒计数的float类型数字。

    格式化时间 (Format String)

    time.strftime( ) ,括号中可以传 (%Y,%m,%d,%H,%M,%S)

    import time
    time.strftime('%Y-%m-%d')
    time.strftime('%Y-%m-%d %H:%M:%S')
    time.strftime('%Y-%m-%d %X')
    time.strftime('%X')
    

    “时分秒” 可以通过%X全部一起打印出来

    格式化时间对象 (struct time)

    struct_time = time.localtime()  #将本地时间戳转为格式化时间对象
    struct_time = time.gmtime()  # 将标准时间戳转为格式化时间对象
    res1 = time.strftime('%X', time.localtime())  # 当前时区的格式化时间对象转为格式化时间
    res2 = time.strftime('%X', time.gmtime())  #  # 将时间对象转化为格式化时间
    res3 = time.strptime('2019-4-5','%Y-%m-%d')  # 将格式化时间转化为格式化时间对象
    # 格式化时间对象返回的是元组,其中tm_yday表示时间是一年中的第几天
    

    datetime模块

    可以用来计算

    获取当前的年月日:

    import datetime
    print(datetime.date.today())  # 获取当前的日期
    print(datetime.datetime.today())  # 获取当前的时间和日期
    time_obj = datetime.datetime.today() # 获取当前的时间和日期,变成时间对象
    
    print(datetime.datetime.now())  # 当前时间
    print(datetime.datetime.utcnow())  # 标准时间
    

    时间及日期的运算

    import datetime
    time_obj = datetime.datetime.today() # 获取当前的时间和日期,变成时间对象
    later = datetime.timedelta(hours=20)  # 差值的时间对象
    new_date = time_obj + later  # 时间对象之间可以进行加减运算
    

    random模块

    基本内容

    import random
    a = random.randint(1,9)  # 可以取到两侧的边界
    print(a)
    b = random.random()  # 取值范围在0和1之间的任意数
    print(b)
    list1 = [1, 2, 3, 4, 5, 6]
    new_list = random.shuffle(list1)  # 打乱可迭代对象中的排列顺序(shuffle洗牌)
    print(list1)
    element = random.choice(range(5))  # 在可迭代对象中随机取出一个值(choice抽牌)
    print(element)
    

    需求:实现5位数的验证码,其中要包含大小写英文字母和数字。

    chr(数字)  可以将将数字的值转化成对应的ASCII码表中的符合
    在ASCII码表中:a-z[97,122],A-Z[65,90],0-9[48,57],空格是32,NULL是0
    
    def veri_code(n):
        res = ''
        for i in range(n):
            low_alpha = chr(random.randint(97, 122))
            upper_alpha = chr(random.randint(65, 90))
            num = str(random.randint(0, 9))
            list = [low_alpha, upper_alpha, num]
            res = res + random.choice(list)
    
        return res
    
    
    verification_code = veri_code(9)
    print(verification_code)
    

    os模块

    主要涉及:1、当前文件的绝对路径 2、上级目录的绝对地址 3、如何拼接文件路径 4、判断文件以及文件夹是否存在 5、判断是否是文件夹 6、创建文件夹 7、删除文件夹 8、打印文件夹下的目录

    # _*_ coding: gbk _*_
    # @Author: Wonder
    import os
    
    BASE_PATH = os.path.abspath(__file__)  # 获取当前文件的绝对路径
    print(BASE_PATH)
    ROUTE = os.path.dirname(__file__)  # 获取当前文件的上一级目录的地址
    print(ROUTE)
    
    TEST_PATH = os.path.join(ROUTE, 'abc.txt')  # 拼接文件地址
    print(TEST_PATH)
    
    print(os.path.exists(ROUTE))  # 判断文件路劲是否存在
    print(os.path.exists(BASE_PATH))  #判断的结果为True或许False
    
    print(os.path.isdir(BASE_PATH))  #判断文件夹是否存在(isdirector)
    
    # 创建文件夹
    NEWFILE_PATH = os.path.join(ROUTE, 'os的演示')  #先拼接出地址
    os.mkdir(NEWFILE_PATH)  # 再创建文件夹
    
    #删除文件夹
    os.rmdir(NEWFILE_PATH)  #删除文件夹也是基于路径操作的,如果文件夹中有内容,就不允许删除。
    
    #获取文件夹中所有的文件名
    dirctory_list = os.listdir(ROUTE)  #参数也是文件夹的路径
    print(dirctory_list)
    list1 =list(enumerate(dirctory_list))  # enumerate是枚举函数,在原可迭代对象每个元素前加上序号,组成元组
    print(list1)
    
    # _*_ coding: gbk _*_
    # @Author: Wonder
    import os
    PATH = os.path.dirname(__file__)
    print(os.listdir(PATH))  # 返回PATH路径下的带扩展名的文件名  以及文件夹名,是个列表
    # ['123', 'abc抽象类.py', 'os 模块测试.py', 'readme.txt', '周长与面积.py', '第一题.py']
    

    sys模块

    主要用于增加环境变量,与python解释器交互
    sys.path 是当前的环境变量,是一个列表
    sys.path.append(os.path.dirname(file))

    sys.agrv 此处功能欠缺,需要补充......

    获取cmd终端的命令行

    hashlib模块

    常用的加密方法MD5,只要原始值一样,通过MD5加密后的结果也一样。容易被撞库导致密码被暴力破解。

    因此,在加密过程中通过加盐,保证了明文和密文之间不同步,在验证密码的时候也需要加盐进行对比判断。

    md5_obj = md5()  # 建立空对象 
    md5_obj.update(password.encode('utf-8'))  # 此处要以bytes形式增加,加盐同理
    real_pwd = md5_obj.hexdigest()  # 进行加密处理
    

    以下为对密码加密的实例

    from hashlib import md5
    import time
    
    md5_obj = md5()  # 建立空对象
    print(type(md5_obj))
    username = input('>>>请输入用户名')
    password = input('>>>请输入密码')
    md5_obj.update(password.encode('utf-8'))  # 此处要以bytes形式增加
    sal = '坦克车'
    md5_obj.update(sal.encode('utf-8'))
    real_pwd = md5_obj.hexdigest()  # 进行加密处理
    with open(f'{username}.txt', 'w', encoding='utf-8')as wf:
        wf.write(f'{username}:{real_pwd}:{time.strftime("%Y-%m-%d %X")}')
    
  • 相关阅读:
    协方差矩阵
    VS2010+C#+EmguCV 配置详解
    OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net)
    EmguCV学习 与opencv的区别和联系
    redis新手入门,摸不着头脑可以看看<二>
    java常用工具类[待补充]
    redis新手入门,摸不着头脑可以看看<一>
    用java代码发送http请求
    Date和long类型互转
    WEB-INF目录下文件复制的几种方式
  • 原文地址:https://www.cnblogs.com/csic716/p/11874781.html
Copyright © 2020-2023  润新知