zoukankan      html  css  js  c++  java
  • python day19

    常用模块(二)

    random模块:随机数

    1、random.random()  #随机取(0,1)之间的小数(开区间)

    2、random.randint(1,10)  #随机取[1,10]之间的整数(闭区间)

    3、random.randrange(1,10)  #随机取[1,10)之间的整数(左闭右开)

    4、random.unifrom(1,10)  #随机取(1,10)之间的小数(开区间)

    5、random.choice(item)  #单列集合随机选1个

    6、random.sample(item,n)  #单列集合随机选n个

    7、random.shuffle(item)  #洗牌单列集合

    json模块:序列化

      --json格式是统一的,主要用来传输数据,所以json有自己支持的格式(字符串格式),都是{}与[]嵌套的数据,如果是单数据也可以

      --{}相当于字典,[]相当于列表,字符串必须用双引号,null相当于None,布尔值会转成小写,json中字典的key必须是字符串

    序列化:dump  |  dumps  对象 ==>字符串

      json.dumps(obj)  #可以把对象序列化成字符串

      json.dump(obj,file)  #可以把对象序列化成字符串并写到文件中

    反序列化:load  |  loads  字符串 ==>对象

      json.loads(json_str)  #可以把json格式的字符串转换成对象

      json.load(file)  #可以把文件里存的json格式的字符串转换成对象

    pickle模块:序列化

      --主要用于存文件,因为他基本什么格式都支持,使用的编码不是utf-8,所以不能用utf-8来解码

    序列化:dump  |  dumps  对象转换成二进制字符串

      pickle.dumps(obj)  #可以把对象转换成二进制字符串

      pickle.dump(obj,write_byte_file)  #可以把对象以二进制字符串存到文件中

    反序列化:load  |  loads  #可以把二进制字符串转换成对象

      pickle.loads(bytes_str)  #可以把二进制字符串转换成对象

      pickle.load(read_byte_file)  #可以把文件中的二进制字符串读出来转换成对象

    shelve模块:可以用字典存取数据到文件的序列化模块

    序列化:存

    s_dic = shelve.open('target_file',writeback = True)  

      #可以创建出可以用字典存取数据的文件,writeback = True允许序列化的可变类型,

      #如果存入可变类型,可以提取出来append()新的值进去

      #不可变类型也可以提取出来重新赋值

      #打开一次文件结束后必须关闭close

    s_dic['key'] = 'value'  #这就把value和对应的key一起存入文件中了

    反序列化:取

    print(s_dic['key'])  #就可以把key对应的value取出来

    s_dic.close()  #释放文件

    shutil模块:可以操作权限的处理文件模块(功能比较强大)

    #基于路径的文件复制

    shutil.copyfile( 'source_file' , 'target_file' )

    #基于流的文件复制

    with open('source_file','rb') as rf,open('target_file','wb') as wf:

      shutil.copyfileobj(rf,wf)

    #递归删除目标目录

    shutil.rmtree(folder)

    #文件移动

    shutil.move('old_path','new_path')

    #文件压缩

    shutil.make_archive('file_name','format','archive_path')

      --file_name:压缩完文件路径  format:压缩格式  archive_path:原文件路径

    #文件解压

    shutil.unpack_archive('unpack_file','unpack_name','format')

      --unpack_file:原压缩文件  unpack_name:解压完的文件名  format:解压格式

    hashlib模块:加密    

      --基本都是单向加密,把加密完的数据存到数据库中,用户再次提供数据时就和这个进行比较

    cipher = hashlib.md5('需要加密的数据'.encode('utf-8'))

      #对于md5来说,定义加密文件的括号里可以写数据也可以不写,写的数据必须是二进制数据

      #一次定义完之后可以后续update添加数据,原数据还在,只有重新定义才会没有之前的数据

    res = cipher.hexdigest()  #获得加密完的结果

    cipher.update('二进制数据')

    print(res)

    # 加盐 :通常是在数据的开始和结尾加盐  --也就是加上一些只有自己知道的特殊符号转换的二进制

      --1、可以使原来简单的数据变得复杂,不容易碰撞解密成功

      --2、如果被碰撞解密成功,前后加了一些自己的数据,也可以使别人想要获得原数据难度加大

    cipher = hashlib.md5()

    cipher.update('前盐'.encode('utf-8'))

    cipher.update('原数据'.encode('utf-8'))

    cipher.update('后盐'.encode('utf-8'))

    print(cipher.hexdigest())  #查看最后加密结果

    hmac模块:加密

    cipher = hmac.new('数据'.encode('utf-8'))  #定义的时候在括号里必须写数据或者盐

    cipher.update('数据或者盐'.encode('utf-8'))

    print(cipher.hexdigest())    #查看加密结果

  • 相关阅读:
    ACL最大权限及相关命令
    ACL权限设置
    Linux权限管理--ACL权限简介
    Linux用户信息文件/etc/passwd
    本地光盘yum源的搭建
    响应式 和 移动 web
    svg
    vi 命令
    html 语法
    运营给的广告设计稿如何做
  • 原文地址:https://www.cnblogs.com/hesujian/p/10834789.html
Copyright © 2011-2022 走看看