day16_python_1124
圈子
圈子是互相影响,走着走着就散了。
道不同不相为谋,与人的认知相关。
圈子如何正向引导?
圈子能决定你的人生走向。
圈子能决定你的格局。
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的更多相关文章
随机推荐
- JavaBean持久化
JavaBean持久化并不局限于Swing构件的存储,可以使用该机制存储任意对象的集合,只要遵守一些简单的规则即可. XMLEncoder内置了对下列类型的支持: ●null ●所有基本类型及其包装器 ...
- shiro学习总结
首先4个比较好的例子供参考: 1.常规Spring MVC拦截器实现的认证和权限管理例子 https://blog.csdn.net/u013647382/article/details/539956 ...
- WGDC2019第八届全球地理信息开发者大会(北京)
WGDC2019第八届全球地理信息开发者大会 会议召开时间:2019-07-09 08:00至 2019-07-10 18:00结束 会议召开地点:北京 北京国际会议中心 朝阳区北辰东路8号 会议 ...
- linux之tree命令
linux下tree命令的用法解释 2018年03月22日 ⁄ RakSmart教程 ⁄ 共 583字 ⁄ 字号 小 中 大 ⁄ linux下tree命令的用法解释已关闭评论 tree命令,主要功能是 ...
- python3.x 读写文件要使用UTF8编码的话需要。。
读写文件常遇到编码不正确的情况,都用UTF8读写文件就好了,在读写的时候加上编码格式:encoding='UTF-8'如下:with open(filename, 'r', encoding='UTF ...
- Hdu1241 Oil Deposits (DFS)
Problem Description The GeoSurvComp geologic survey company is responsible for detecting underground ...
- "Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库。"异常处理
公司一台SQL Server服务器一直报 "Login failed for user 'NT AUTHORITY\SYSTEM'. 原因: 无法打开明确指定的数据库."错误,按网 ...
- 2019/4/2 wen 多态、抽象
- 剑指offer(43)左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abc ...
- Bytom合约预编译
比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 在开发合 ...