圈子
圈子是互相影响,走着走着就散了。
道不同不相为谋,与人的认知相关。
圈子如何正向引导?
圈子能决定你的人生走向。
圈子能决定你的格局。

01 昨日内容回顾
序列化模块
将一个数据结构 ----> 特殊的字符串(用于网络传输) 序列化过程
特殊的字符串 ------> 原数据结构 反序列化过程
json 所有语言通用,
python数据结构:int str bool list(tuple)dict
两对四个
1,json.dumps() json.loads() 网络传输 多个数据写入文件
2,json.dump() json.load() 单个数据写入文件
dic {1: 'alex'}
字典中的字符串全部都是双引号。

pickle : python语言之间的序列化模块 支持python所有数据类型 对象
两对四个
1,pickle.dumps() pickle.loads() 网络传输
2,pickle.dump() pickle.load() 数据(多个)写入文件
shelve
通过类似于字典的操作方式将数据写入文件。
hashlib : 加密模块,摘要算法 一系列加密算法的集合。
对字符串 -----> 数字的过程。
无论字符串多大 -----> 数字长度一样。
相同的字符串 转化的结果一样。
过程不可逆。
MD5 sha sha 数字越大 密文越长 耗时越长,安全系数越高。
ret = hashlib.md5()
ret.update('aelx'.encode('utf-8'))
ret.hexdigest()

加盐
ret = hashlib.md5('更复杂一些')
ret.update('aelx'.encode('utf-8'))
ret.hexdigest()

动态加盐
ret = hashlib.md5('更复杂一些')
ret.update('aelx'.encode('utf-8'))
ret.hexdigest()
import hashlib
username = 'alex'
password = '123'
salt = lambda x: x + 'sb'
ret = hashlib.md5(salt(username).encode('utf-8'))
ret.update(password.encode('utf-8'))
print(ret.hexdigest())
sha

1,密码的加密。
2,文件的校验。

os,sys, collections.

02 包
函数过多了,我可以分模块文件去管理函数,模块文件过多,要将模块文件分类,放在一个一个的文件夹中,
这个文件夹就叫做包,组织机构更加清晰合理。
包就是文件夹。
模块就是被别人去使用,包既然是一些模块文件的集合,也是被被人去调用。
文件:
1,被别人使用。
2,当作脚本自己使用。
执行文件运行时,会将执行文件的当前目录加载到sys.path列表中。

03 random 模块
04 shutil

# 02 昨日知识点回顾

# import hashlib

# username = 'alex'# password = '123'# salt = lambda x : x + 'sb'# ret = hashlib.md5(salt(username).encode('utf-8'))# ret.update(password.encode('utf-8'))# print(ret.hexdigest())

# 03 包

# 回顾 执行一个模块会发生三件事# 1,创建一个以模块名命名的名称空间。# 2,执行模块代码将模块里面的代码加载到模块名命名的名称空间的内存中。# 3,调用模块内的名字必须通过模块名. 的方式调用。

# 创建一个名为aaa的包# import aaa# 包也是模块,他是模块的集合体,所以引用包也会发生三件事情:# 1,创建一个以包名命名的名称空间。# 2,执行包中的__init__文件,将__init__里面的代码块加载到以包名明命的名称空间的内存中。# 3,调用包内的名字必须通过包名. 的方式调用。# print(aaa.x)# print(aaa.y)# aaa.func1()# print(aaa.m2)# print(aaa.m2.xx)# aaa.m2.func2()# print(aaa.bbb)

# 在aaa文件夹下创建名为bbb的包# 想要在此文件引用 bbb包的m3模块 怎么做?# 第一步 在此文件 import aaa# 第二步:在aaa 的 __init__ 添加 from aaa import bbb# 第三步:在bbb 的 __init__ 添加 from aaa.bbb import m3# 完成以上三步,那么我在此执行文件就可以引用bbb包的m3模块里面的名字。# aaa.bbb.m3.func3()

# 上面的需求满可以这么做:# from aaa.bbb import func3# m3.func3()

# 总结:#  from a.b import c  .的左边一定是个包,import 后面一定一个具体的名字# 包里面的__init__ 如果想要引用模块必须是 from ....import ... 不能直接 import# from a.b.c.d import e.f.g  错误# from a.b.c.d import e

# 04 相对导入绝对导入  ???

# 绝对导入: 以执行文件的sys.path为起始点开始导入,称之为绝对导入#        优点: 执行文件与被导入的模块中都可以使用#        缺点: 所有导入都是以sys.path为起始点,导入麻烦

# 相对导入: 参照当前所在文件的文件夹为起始开始查找,称之为相对导入#        符号: .代表当前所在文件的文件加,..代表上一级文件夹,...代表上一级的上一级文件夹#        优点: 导入更加简单#        缺点: 只能在导入包中的模块时才能使用

# from nb import m1# import nb# print(m1.f1())# nb.m1.f1()

# 05 random

import random# print(random.random())  #  大于0且小于1之间的小数# print(random.uniform(1,3))  # #大于1小于3的小数# print(random.randint(1,5))  # 大于等于1且小于等于5之间的整数# print(random.randrange(1,10,2))  # 10以内的奇数# print(random.choice(['alex','wusir','日天'])) # 多选一# print(random.sample(['alex','wusir','日天','太白'],2)) # 多选多# l1 = [1, 2, 3, 4, 5]# random.shuffle(l1)# print(l1)

# 题目# 生成随机验证码# 5个字符:0~9 数字, a~z的字母#    '1qw34'# 选择1~9:# random.randrange(10)  # 随机数字# 先从97 ~122 随机选择一个数字然后用chr表示字母# print(chr(122))  ## 二选任意一个字符

# import random# str_ = ''# for i in range(5):#     num = str(random.randrange(10))#     str1 =chr(random.randrange(97,122))#大写65-92#     sum = random.choice([num,str1])#     str_ += sum# print(str_)

# 随机字符串# def get_code():#     code = ''#     for i in range(5):#         num = str(random.randrange(10))#         s = chr(random.randint(97,122))#         s_b = chr(random.randint(65,90))#         single_s = random.choice([num, s, s_b])#         code += single_s#     return code

# print(get_code())

# 06 shutil

import shutil# 将文件内容拷贝到另一个文件中# shutil.copyfileobj(open('log1','r'),open('log2','w'))# 复制文件# shutil.copyfile('log1','log.bak')

# shutil.copytree('NB1','nbb',ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

# 打包?压缩?import shutilimport timeimport tarfile# 打包文件# shutil.make_archive('NB1%s' %time.strftime('%Y-%m-%d'),'gztar',root_dir='NB1')

# 解压# t = tarfile.open('NB12019-01-10.tar.gz','r')# t.extractall('ttt')# t.close()

day16_python_1124的更多相关文章

随机推荐

  1. 55.Vue环境搭建

    Vue环境搭建 在搭建过程中出现的错误解决办法  https://www.cnblogs.com/lovebing/p/9488198.html      cross-env使用笔记   cross- ...

  2. Install rapyuta Robot Cloud Engine on Ubuntu14.04

    # -Rapyuta-installation-in-Ubuntu14.04-LTS-Trusty-This gzip folder is a tested version which can ins ...

  3. c#链接access数据库

    public ActionResult Index() { OleDbDataAdapter db = new OleDbDataAdapter("select * from [user]& ...

  4. nginx--service配置

    nginx从今天开始进行相关学习了,包括:1.注册centos的service服务:2.相关的tomcat负载:3.https配置:4.session共享配置 1.注册centos的service服务 ...

  5. Zeu.js

    一个生成各种 GIF 动画的 JavaScript 类库,非常适合用于让你的数据展示变得更加地生动.使用起来也非常简单,有数据展示需求的同学可以尝试一下.https://shzlw.github.io ...

  6. 关于django1.8版本的静态文件配置

    环境:Python3.5.4,django1.8.1. 在页面使用js时,总是提示404找不到js文件. 于是,看看了settings文件 好像也没什么毛病.导入的方式也换了很多种,总是不行,于是只好 ...

  7. openvpn 初步使用

    服务端:Centos 7.2 openvpn 2.4.3 客户端:Windows 10 安装包 openvpn的官网在国内访问不了,服务端通过yum安装,客户端在第三方网站下载的 一般的国内源应该都包 ...

  8. Dockerfile构建容器---构建本地tomcat

    前序 这是我第一次摸索.做个笔记记录一下. 首先准备好tomcat与jdk解压到与Dockerfile同级的目录下, 构建文件命名必须为Dockerfile, 为什么同级, 因为build的时候会默认 ...

  9. 常用验证正则:用户名、密码、邮箱、手机号、身份证(PHP和JavaScript)

    日常开发中,常常会用到一些简单常用的正则表达式,用于判断一些常见的情况 下边,就列出五种(验证用户名,密码强度,邮箱格式,手机号格式和身份证格式)常见的情况 分成PHP版本和JavaScript两个版 ...

  10. 【Alpha】Scrum Meeting 3

    目录 简介: 工作内容: 工作修改: 燃尽图: 难点: 后期任务: 签入记录 团队讨论照片: 简介: 地点:J1-316 时间:4月3日星期四,晚上七点 会议目的:讨论大家此次的分工 工作内容: 陈治 ...