zoukankan      html  css  js  c++  java
  • python内置模块

    一、time模块

    time模块是一个时间模块

    在python的三种时间表现形式:
    1.时间戳: 给电脑看的。
      - 自1970-01-01 00:00:00到当前时间,按秒计算,计算了多少秒。

    2.格式化时间(Format String): 给人看的
      - 返回的是时间的字符串 2002-01-11

    3.格式化时间对象(struct_time):
      - 返回的是一个元组, 元组中有9个值:
    9个值分别代表: 年、月、日、时、分、秒、一周中第几天,一年中的第几天,夏令时(了解)

    1.获取时间戳(******)计算时间时使用

    1 # 1.获取时间戳(******)计算时间时使用
    2 time.time()
    3 print(time.time())

    2.获取格式化时间 (*******)拼接用户时间格式并保存时使用

     1 # 获取年月日
     2 """
     3 %Y  Year with century as a decimal number.
     4 %m  Month as a decimal number [01,12].
     5 %d  Day of the month as a decimal number [01,31].
     6 %H  Hour (24-hour clock) as a decimal number [00,23].
     7 %M  Minute as a decimal number [00,59].
     8 %S  Second as a decimal number [00,61].
     9 """
    10 time.strftime('%Y-%m-%d  %H:%M:%S')
    11 print(time.strftime('%Y-%m-%d  %H:%M:%S'))
    12 # %X == %H:%M:%S
    13 print(time.strftime('%Y-%m-%d  %X'))

    3.获取时间对象

     1 time_obj = time.localtime()
     2 print(time_obj)
     3 print(time_obj.tm_year, time_obj.tm_mon, time_obj.tm_wday)
     4 
     5 res = time.localtime()
     6 time.sleep(2)
     7 # 获取当前时间的格式化时间
     8 print(time.strftime("%Y-%m-%d  %H:%M:%S", time.localtime()))
     9 
    10 # 将时间对象转为格式化时间
    11 print(time.strftime("%Y-%m-%d  %H:%M:%S", res))
    12 
    13 # 将字符串格式的时间转为时间对象
    14 res = time.strptime('2019-01-01', '%Y-%m-%d')
    15 print(res)

    二、datetime模块

    1 # 获取当前年月日
    2 print(datetime.date.today())
    1 # 获取当前年月日时分秒
    2 print(datetime.datetime.today())
    3 
    4 time_obj = datetime.datetime.today()
    5 print(type(time_obj))
    6 print(time_obj.year, time_obj.month, time_obj.day)
    1 # 从索引0开始计算周一
    2 time_obj = datetime.datetime.today()
    3 # UTC
    4 print(time_obj.weekday())   # 0-6
    5 # ISO
    6 print(time_obj.isoweekday())    # 1-7
    1 # UTC时区
    2 # 北京时间
    3 print(datetime.datetime.now())
    4 # 格林威治
    5 print(datetime.datetime.utcnow())

    日期/时间的计算 (*******)
      日期时间 = 日期时间 “+” or “-” 时间对象
      时间对象 = 日期时间 “+” or “-” 日期时间

     1 # 当前时间日期
     2 current_time = datetime.datetime.now()
     3 print(current_time)
     4 
     5 # 时间对象
     6 # 获取七天时间
     7 time_obj = datetime.timedelta(days=7, hours=1, minutes=12, seconds=30)
     8 print(time_obj)
     9 
    10 # 获取当前时间七天后的时间
    11 later_time = current_time + time_obj
    12 print(later_time)
    13 
    14 time_new_obj = later_time - time_obj
    15 print(time_new_obj)

    三、random模块

    1 # 随机获取1—9中任意的整数
    2 res = random.randint(1, 10)
    3 print(res)
    1 # 默认获取0—1之间任意小数
    2 res = random.random()
    3 print(res)
    4 
    5 res = int(res * 100)
    6 print(res)
    1 # 洗牌
    2 # 将可迭代中的值进行乱序
    3 list1 = ['1', '2', '3', '4', '5', '6']
    4 random.shuffle(list1)
    5 print(list1)
    # 随机获取可迭代对象中的某一个值
    list1 = ['1', '2', '3', '4', '5', '6']
    res = random.choice(list1)
    print(res)
    需求: 
    大小写字母、数字组合而成
    组合5位数的随机验证码

    前置技术:
    - chr(97) # 可以将ASCII表中值转换成对应的字符
    # print(chr(101))
    - random.choice
     1 def get_code(n):
     2     code_str = ''
     3     for i in range(n):
     4         # 大写字母
     5         upper_num = random.randint(65, 90)
     6         upper_c = chr(upper_num)
     7 
     8         # 小写字母
     9         lower_num = random.randint(97, 122)
    10         lower_c = chr(lower_num)
    11 
    12         # 数字
    13         num = str(random.randint(0, 9))
    14 
    15         code_list = [upper_c, lower_c, num]
    16         code = random.choice(code_list)
    17         code_str += code
    18     return code_str
    19 
    20 code_str = get_code(7)
    21 print(code_str)

    四、os模块

    os与操作系统交互的模块

     1 import os
     2 
     3 # 获取当前项目根目录
     4 # 获取当前文件中的上一级目录
     5 DAY15_PATH = os.path.dirname(__file__)
     6 print(DAY15_PATH)
     7 # 项目的根目录,路径相关的值都用 “常量”
     8 DBSE_PATH = os.path.dirname(DAY15_PATH)
     9 print(DBSE_PATH)
    10 print(os.path.dirname(DBSE_PATH))
    11 
    12 # 路径的拼接: 拼接文件 “绝对路径”
    13 TEST_PATH = os.path.join(DAY15_PATH, 'abc.txt')
    14 print(TEST_PATH)
    15 
    16 # 判断“文件/文件夹”是否存在:若文件存在返回True,若不存在返回False
    17 print(os.path.exists(TEST_PATH))
    18 print(os.path.exists(DAY15_PATH))
    19 
    20 # 判断“文件夹”是否存在
    21 print(os.path.isdir(TEST_PATH))
    22 print(os.path.isdir(DAY15_PATH))
    23 
    24 # 创建文件夹
    25 DIR_PATH = os.path.join(DAY15_PATH,'测试')
    26 os.mkdir(DIR_PATH)
    27 
    28 # 删除文件夹:只能删除 “空的文件夹”
    29 os.rmdir(DIR_PATH)
    30 
    31 # 获取某个文件夹中所有文件的名字
    32 test_list = os.listdir(r'D:Python13期day15	est')
    33 print(test_list)
    34 
    35 # enumerate(可迭代对象) ---> 得到一个对象,对象有一个个的元组(索引, 元素)
    36 res = enumerate(test_list)
    37 print(list(res))
     1 #让用户选择文件
     2 test_list = os.listdir(r'D:Python13期day15	est')
     3 print(test_list)
     4 while True:
     5     # 1.打印test文件夹中所有的文件
     6     for index, name in enumerate(test_list):
     7         print(f'{index}	{name}')
     8     choice = input('选择:').strip()
     9     if not choice.isdigit():
    10         print('输入数字')
    11         continue
    12     choice = int(choice)
    13     if choice not in range(len(test_list)):
    14         print('输入数字不对')
    15         continue
    16     file_name = test_list[choice]
    17 
    18     test_path = os.path.join(r'D:Python13期day15	est', file_name)
    19     print(test_path)
    20     with open(test_path, 'r', encoding='utf-8')as f:
    21         print(f.read())

    五、sys模块

     1 import sys
     2 import os
     3 
     4 # 获取当前的Python解释器的环境变量路径
     5 print(sys.path)
     6 
     7 # 将当前项目添加到环境变量中
     8 BASE_PATH = os.path.dirname(os.path.dirname(__file__))
     9 sys.path.append(BASE_PATH)
    10 print(sys.path)
    11 
    12 # 获取cmd终端的命令行  python3 py文件 用户名 密码
    13 print(sys.argv)  # 返回的是列表['py文件', '用户名', '密码']

    六、hashlib模块

    - sha_256(了解)
    hashlib是一个加密模块:
      内置了很多算法
    - MD5(*******): 不可解密的算法(2018年以前)

    摘要算法:
      - 摘要是从某个内容中获取的加密字符串
      - 摘要一样,内容就一定一样: 保证唯一性

      - 密文密码就是一个摘要

     1 import hashlib
     2 #
     3 md5_obj = hashlib.md5()
     4 print(md5_obj)
     5 
     6 str1 = '123'
     7 # update中一定要传入bytes类型数据
     8 md5_obj.update(str1.encode('utf-8'))
     9 
    10 # 得到一个加密后的字符串
    11 res = md5_obj.hexdigest()
    12 print(res)
    13 # 202cb962ac59075b964b07152d234b70

    以上操作撞库有可能会破解真实密码,解决办法就是加盐

     1 def pwd_md5(pwd):
     2     md5_obj = hashlib.md5()
     3     str1 = pwd
     4     # update中一定要传入bytes类型数据
     5     md5_obj.update(str1.encode('utf-8'))
     6 
     7     # 创造盐
     8     str2 = 'abc'
     9     # 加盐
    10     md5_obj.update(str2.encode('utf-8'))
    11 
    12     # 得到一个加密后的字符串
    13     res = md5_obj.hexdigest()
    14     return res
    # 模拟用户登陆操作
    
    # 获取文件中的用户名与密码
    with open('user.txt', 'r', encoding='utf-8')as f:
        user_str = f.read()
    name_str, pwd_str = user_str.split(':')
    while True:
        # 用户输入用户名与密码
        name = input('输入用户名:').strip()
        pwd = input('输入密码:').strip()
    
        pwd = pwd_md5(pwd)
        if name == name_str and pwd == pwd_str:
            print('登录成功')
        else:
            print('登录失败')
  • 相关阅读:
    python---模块与包
    python---迭代器与生成器
    python---装饰器
    Python---函数
    Python---文件操作
    Python---数据类型
    浅谈UBUNTU
    java 键盘输入多种方法
    动态规划解最长公共子序列问题
    线段树
  • 原文地址:https://www.cnblogs.com/hexianshen/p/11872605.html
Copyright © 2011-2022 走看看