• Python基础之常用模块(一)


    模块本质就是一个.py文件,在安装目录下的lib文件夹下可以看到

    模块分为三个部分:内置模块(存在于解释器中),第三方模块(lib文件夹下),自定义模块(自己定义的)

    1.time模块

    import time
    #返回当前时间的时间戳
    print(time.time())#1498027773.1063557
    
    #以时间戳为参数,返回结构化的时间元组,参数默认为当前时间
    print(time.localtime(1912412470))#time.struct_time(tm_year=2030, tm_mon=8, tm_mday=8, tm_hour=17, tm_min=41, tm_sec=10, tm_wday=3, tm_yday=220, tm_isdst=0)
    
    #以时间戳为参数,返回结构化的格林尼治时间,默认参数为当前时间
    print(time.gmtime())    #time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=6, tm_min=49, tm_sec=2, tm_wday=2, tm_yday=172, tm_isdst=0)
    
    #结构化时间转化成字符串时间
    print(time.strftime('%Y:%m:%d-%X',time.localtime()))   #2017:06:21-14:48:50
    
    #字符串时间转化为格式化时间
    print(time.strptime('1993-10-15','%Y-%m-%d'))  #time.struct_time(tm_year=1993, tm_mon=10, tm_mday=15, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=288, tm_isdst=-1)
    
    #结构化时间转换成时间戳
    print(time.mktime(time.localtime()))#1498027859.0
    
    print(time.asctime())   #Wed Jun 21 14:53:11 2017
    print(time.ctime())     #Wed Jun 21 14:53:11 2017
    
    #线程推迟指定时间运行,参数为指定的秒数
    time.sleep(5)

    几种时间形式的转换:

    2.random模块

    import random
    
    print(random.random())#随机返回一个(0,1)之间的浮点数  0.40165771797504246
    
    print(random.randint(1,3))  #随机返回一个指定范围[1,3]的int类型  3
    
    print(random.randrange(1,3)) #随机返回一个指定范围[1,3)的int类型  1
    
    print(random.choice([12,21,23,34,'a','b']))#随机返回一个指定列表中的元素  12
    
    print(random.sample([12,21,23,34,'a','b'],3))#随机返回指定个数的指定列表中的元素  ['a', 21, 'b']
    
    print(random.uniform(1,3))#随机返回一个(1,3)之间的浮点数    2.2162483038520144
    
    l=[1,2,3,4,5,6]
    random.shuffle(l)   #把指定列表的顺序打乱
    print(l)    #[1, 3, 6, 2, 4, 5]

    练习

    #练习,随机生成一个5位的验证码,包括数字,大小写字母
    
    import random
    res=''
    for i in range(5):
        num=random.randint(0,9)
        alpA=chr(random.randint(65,90))
        alpa=chr(random.randint(97,122))
        s=random.choice([str(num),alpA,alpa])
        res=res+s
    print(res)

    3.os模块

    import os
     2 
     3 #获取当前工作目录
     4 print(os.getcwd())  #C:untitled621day12
     5 
     6 #改变当前工作目录,相当于shell中的cd
     7 os.chdir(file_path)
     8 
     9 #生成多层递归目录
    10 os.makedirs('dirname1/dirname2')
    11 
    12 #递归删除空目录
    13 os.removedirs(path)
    14 
    15 #生成单级目录
    16 os.mkdir('dirname')
    17 
    18 #删除单级空目录,目录不为空则不能删除
    19 os.rmdir(path)
    20 
    21 #列出指定目录下的所有文件和子目录,包括隐藏文件,以列表方式打印
    22 print(os.listdir(r'C:untitled612Python第五天'))  #['0612作业.py', 'a.txt', '作业题目', '字符编码.py', '文件操作.py']
    23 
    24 #删除一个文件
    25 os.remove()
    26 
    27 #重命名文件/目录
    28 os.rename('oldname','newname')
    29 
    30 #获取文件/目录信息
    31 os.stat(path)
    32 print(os.stat(r'C:untitled612Python第五天')) #os.stat_result(st_mode=16895, st_ino=2814749767244350, st_dev=3504670893, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1497356489, st_mtime=1497356489, st_ctime=1497227714)
    33 
    34 #返回文件目录,其实就是os.path.split(path)的第一个元素
    35 os.path.dirname(path)
    36 
    37 #返回文件的文件名,其实就是os.path.split(path)的第二个元素
    38 os.path.basename(path)#如果path以/或结尾,则会返回空值
    39 
    40 #如果文件存在,则返回True,否则返回False
    41 os.path.exists(path)
    42 
    43 #如果path是绝对路径,则返回True
    44 os.path.isabs(path)
    45 
    46 #将多个路径组合后返回,第一个绝对路径之前的参数将会被忽略
    47 os.path.join(path,paths)
    48 
    49 #返回path所指向的文件或目录的最后访问时间
    50 os.path.getatimme(path)
    51 
    52 #返回path所指向的文件或目录的最后修改时间
    53 os.path.getmtime(path)
    54 
    55 #返回path的大小
    56 os.path.getsize(path)
    57 # 把path中包含 "~" 和 "~user" 转换成用户目录
    58 os.path.expanduser(path)
    59 # 根据环境变量的值,替换 path 中包含的 "$user" 和 "${name}"
    60 os.path.expandvars(path)

    4.hashlib

    hashlib模块提供了常见的摘要算法,如MD5,SHA1等,在Python3中,hash直接代替了MD5和SHA

    摘要算法是通过一个函数,把任意长度的数据转成一个长度固定的数据串。

    1.摘要算法是不可逆的,不能由数据串反推得到元数据

    2.两个数据,即使只有1bit的区别,得到的摘要也是没有任何关系的

    3.无论元数据有多大,得到的摘要都是固定长度的

    4.当元数据很大时,需要一行一行去读,然后一行一行的校验,最后一个.hexdigest()能把之前所有的校验结果得到一个摘要

    MD5速度很快,也很常用,生成结果是固定的128bit的通常由一个32位的16进制字符串表示。

    import hashlib
    
    md5=hashlib.md5()
    md5.update('aasg'.encode('utf-8'))#434c591c9c5a04e44ec8dbafe81058e7
    md5.update('adasdg'.encode('utf-8'))#d20a55b2194493fdeb66e2cd358dab15
    md5.update('aasgadasdg'.encode('utf8'))#d20a55b2194493fdeb66e2cd358dab15
    print(md5.hexdigest())

    未完待续。。。。

  • 相关阅读:
    日志类
    sql查询数据并导出问题
    高并发系统设计(十七):【系统架构】微服务化后,系统架构要如何改造?
    高并发系统设计(十五):【消息队列】如何降低消息队列系统中消息的延迟?
    高并发系统设计(十四):【消息队列】如何消息不丢失?并且保证消息仅仅被消费一次?
    高并发系统设计(十三):消息队列的三大作用:削峰填谷、异步处理、模块解耦
    高并发系统设计(十二):【缓存的正确使用姿势】缓存穿透了怎么办?如何最大程度避免缓存穿透
    高并发系统设计(十一):【缓存的正确使用姿势】缓存如何做到高可用?
    ThinkPad X1 Carbon无法识别第二屏幕
    如何设置两个TPLink路由器桥接
  • 原文地址:https://www.cnblogs.com/zhang-can/p/7060391.html
Copyright © 2020-2023  润新知