zoukankan      html  css  js  c++  java
  • 模块1 time,random,os ,hashlib

    模块:就是一个.py 文件,函数只能在一个.py文件里用。

    分为:内置模块,  内置再pycharm里

       第三方模块,别人开发好的,

       自定义模块,自己写的,包含模块调用,包的调用

    time模块

    用字符串表示时间,‘2017-06-21’是人能够识别的,而计算机则不行,需要转换才行

    1.时间戳
    import time
    print(time.time()) 结果 1498022736.3174474 是从1970年到当前时间的总秒数
    时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。
    我们运行“type(time.time())”,返回的是float类型。

    2.结构化时间表示

    import time
    print(time.localtime())  #以北京东八区时间为准

    --time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=13, tm_min=30, tm_sec=3, tm_wday=2, tm_yday=172, tm_isdst=0)

    import time
    print(time.gmtime())   #世界标准时间

    4.将结构化时间转化为时间戳   mktime

    import time
    print(time.mktime(time.localtime())) 结果 1498023470.0
    将当地的总时间,计算成总秒数

    5.结构化时间 转为  字符串时间
    import time
    print(time.strftime('%Y-%m-%d',time.localtime())) 结果  2017-06-21

    6.字符串时间 转为  结构化时间
    import time
    print(time.strptime('1990-02-01','%Y-%m-%d'))
    结果
    time.struct_time(tm_year=1990, tm_mon=2, tm_mday=1, tm_hour=0,
    tm_min=0, tm_sec=0, tm_wday=3, tm_yday=32, tm_isdst=-1)
    时间戳是计算机能够识别的  ,以 float的形式存在
    结构化时间是以元组的形式操作时间,
    时间字符串是人能够看懂的
    7.  asctime  结构化时间(locattime)  转为  字符串时间 ,不需要提供格式,asctime本身有固定的格式
    import time
    print(time.asctime()) 结果 Wed Jun 21 13:54:56 2017
    8.
    time.sleep(3)   #等待3秒,再执行打印,就是i/o阻塞
    print('ok')
    =============================================
    random 随机模块
    1.random  ,生成0--1的随机浮点型数字
    import random
    print(random.random()) 结果 0.9535195458063495 ,每次产生都不一样

    2.randint 在范围内随机产生的整形数字
    import random
    print(random.randint(1,5)) 结果 随机产出1--5之间的整形数字,包含5在内

    3.
    import random
    print(random.randrange(1,5)) #与randint相同,但取不到尾部数字

    4.
    import random
    print(random.choice([1,5,3,'a'])) #在列表随机取一个数字


    5.
    import random
    print(random.sample([1,5,3,'a'],2)) #在列表内可以指定随机取出几个  结果 随机产生['a', 3]
    6.
    import random
    print(random.uniform(1,3))  #取范围内的float型,

    7.
    l=[11,22,33,44]
    random.shuffle(l)   #把之前的列表内元素顺序打乱
    print(l)     结构[22, 11, 44, 33]

    ----------------------------------

    chr 是ASCII表中数字  与 字母  的对应关系

    ord 是ASCII表中字母 与数字   的对应关系

    利用random模块随机验证码

    import random
    def valdate_code():
    ret=''
    for i in range(5):
    num=random.randint(0,9)
    alfa=chr(random.randint(97,122))
    alfa1=chr(random.randint(65,90))
    s=random.choice([str(num),alfa,alfa1])
    ret=ret+s
    return ret
    print(valdate_code()) ---结果 是随机产生的 Mau8N


    =======================

    hashlib是个专门提供hash算法的库,其支持openssl 库提供的所有算法,包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。md5经常用来做用户密码的存储。而sha1则经常用作数字签名。

    
    

    1)MD5码

    
    

    MD5的全称是Message-Digest Algorithm 5(信息-摘要算法)。128位长度。目前MD5是一种不可逆算法。

    具有很高的安全性。它对应任何字符串都可以加密成一段唯一的固定长度的代码。

    用途:

    
    

    根据这种唯一性,可以计算两个文件MD5码,判断两个文件是否相同;

    md5 = hashlib.md5()
    md5.update(b'gyh')
    print(md5.hexdigest()) # 16进制的方式加密
    结果 d6f793b3106b2d35dbb8230265753f13

    A 给 B 发送数据,A把 计算数据的md5 ,发送过去 “gyh” ,
    B为了确定是否被改动,就计算MD5码来验证,与A的md5来比较是否一样,一样就是没有改动,否则就是改动。
    hashlib提供的是不可逆的算法,在数据库里存放的是16进制的加密暗文,当发送时就是明文发送,对方再校验是否被篡改。
    
    
    如果数据大, 就分多次update
    md5 = hashlib.md5()
    md5.update(b'gyh')
    md5.update(b'adfdfdfdfd')
    print(md5.hexdigest())
    结果
    f2e59391c71431de1286a5d11ba7e60e

    MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,
    通常用一个32位的16进制字符串表示。另一种常见的摘要算法是SHA1,调用SHA1和调用MD5完全类似:
    sha1 = hashlib.sha1()
    sha1.update(b'gyh')
    sha1.update(b'adfdfdfdfd')
    print(sha1.hexdigest())
    结果  fc371385bfe232771168cd6406b3458474901e6c

    SHA1的结果是160 bit字节,通常用一个40位的16进制字符串表示。
    比SHA1更安全的算法是SHA256和SHA512,不过越安全的算法越慢,而且摘要长度更长。
    =============================
    os模块 是与操作系统提供一个接口
    操作系统是向下管理硬件,向上提供接口
    import os
    print(os.getcwd()) #获取当前的工作目录
    结果 C:UserslenovoPycharmProjectsuntitled6.21

    import os
    print(os.mkdir(r'C:UserslenovoPycharmProjectsuntitled6.20d.txt'))
    结果,该目录下生成新的 d.txt 文件

    import os
    print(os.makedirs(r'C:UserslenovoPycharmProjectsuntitled6.20pk'))
    结果 生成 p 目录下的 k 目录

    import os
    print(os.rename(r'C:UserslenovoPycharmProjectsuntitled6.21c.txt','b.txt'))
    #把目录下的c.txt改成b.txt

    import os
    print(os.stat(r'C:UserslenovoPycharmProjectsuntitled6.21/b.txt')) #查看文件的所有信息
    结果
    os.stat_result(st_mode=16895, st_ino=6473924464490971, st_dev=2833053575,
    st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1498030015, st_mtime=1498030015, st_ctime=1498030015)

     st_atime  最后一次访问文件的时间
    st_mtime  文件的修改时间
    st_ctime  创建文件的时间

    import os
    print(os.path.abspath(r'C:UserslenovoPycharmProjectsuntitled6.21'))
    结果  文件的绝对路径C:UserslenovoPycharmProjectsuntitled6.21
    
    
    import os
    print(os.path.split(r'C:UserslenovoPycharmProjectsuntitled6.21'))
    结果 ,把path分割成目录和文件名('C:\Users\lenovo\PycharmProjects\untitled', '6.21')
    
    
    os.path.dirname(path)  返回path的目录。其实就是os.path.split(path)的第一个元素
    os.path.basename(path)  返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
    
    
    import os
    print(os.path.isabs(r'C:UserslenovoPycharmProjectsuntitled6.21'))
    结果  True  判断路径是否为绝对路径
    
    
    
    
    import os
    print(os.path.getsize(r'C:UserslenovoPycharmProjectsuntitled6.21.txt1.txt'))
    结果  8   获取文件的大小,
    -----------------------
    import os
    print(os.path.getatime(r'C:UserslenovoPycharmProjectsuntitled6.21.txt1.txt'))
    获取文件最后存取时间 结果 1498032094.0046003 是时间戳的形式
    import os
    print(os.path.getmtime(r'C:
    指向的文件或者目录的最后修改时间   结果  1498032094.006605723
     
     
    import time
    print(time.localtime(1498032094.0046003)) #时间戳转为结构化时间
    结果 time.struct_time(tm_year=2017, tm_mon=6, tm_mday=21, tm_hour=16, tm_min=1, tm_sec=34, tm_wday=2, tm_yday=172, tm_isdst=0)
    print(time.strftime('%Y-%m-%d',time.localtime(1498032094.0046003)))   结果 2017-06-21 # 结构时间转为字符串时间

    ------------------------------------
     
     
     










  • 相关阅读:
    Android RSS阅读器
    X86汇编语言学习教程之1 ————前言
    beanstalk源码剖析——概述
    从软件质量看如何写代码(1)
    软件开发模型
    软件质量思考
    数据结构概述
    Don't Distract New Programmers with OOP(转)
    Linus Torvalds’s Lessons on Software Development Management(转)
    谈测试驱动开发
  • 原文地址:https://www.cnblogs.com/gyh04541/p/7060173.html
Copyright © 2011-2022 走看看