• 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")}')
    
  • 相关阅读:
    使用MobaXterm远程连接Ubuntu,启动Octave,界面不能正常显示
    ABP .Net Core 日志组件集成使用NLog
    ABP .Net Core Entity Framework迁移使用MySql数据库
    ABP前端使用阿里云angular2 UI框架NG-ZORRO分享
    阿里云 Angular 2 UI框架 NG-ZORRO介绍
    Visual Studio 2019 Window Form 本地打包发布猫腻
    VS Code + NWJS(Node-Webkit)0.14.7 + SQLite3 + Angular6 构建跨平台桌面应用
    ABP .Net Core 调用异步方法抛异常A second operation started on this context before a previous asynchronous operation completed
    ABP .Net Core To Json序列化配置
    .Net EF Core数据库使用SQL server 2008 R2分页报错How to avoid the “Incorrect syntax near 'OFFSET'. Invalid usage of the option NEXT in the FETCH statement.”
  • 原文地址:https://www.cnblogs.com/csic716/p/11874781.html
Copyright © 2020-2023  润新知