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的更多相关文章
随机推荐
- mysql----------mysql5.7.11导入sql文件时报错This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled
1.导入sql文件出现如下错误. [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in ...
- proto 2 语法
一.proto文件 PB的定义是通过proto文件进行定义的,一个标准的类型如下: message SearchRequest { required string query = 1; optiona ...
- Lua C/C++互相调用
先来说下大致脚本引擎框架,此次采用如下,即运行C++代码启动程序,然后加载Lua脚本执行! 1.基础 Lua脚本中只能调用 int (*lua_CFunction) (lua_State *L) 这种 ...
- tensorboard窥视
运行神经网络时,跟踪网络参数,以及输入输出是很重要的,可据此判断模型是否在学习,损失函数的值是否在不断减小.Tensorboard通过可视化方法,用于分析和调试网络模型. 使用tensorboard的 ...
- c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit();Application.ExitThread(); System.Environment.Exit(0);
本文实例总结了C#中WinForm程序退出方法技巧.分享给大家供大家参考.具体分析如下: 在c#中退出WinForm程序包括有很多方法,如:this.Close(); Application.Exit ...
- Shift键的三个妙用!Word又现神操作!
1.Shift+Alt+上下方向键 :调整段落顺序 同时按这三个键,能够调整段落的顺序,也可以用来调整表格中的行序. 2.Shift+F3:英文大写/小写/首字母大写,这三种模式切换 PS:如果中间夹 ...
- Python 协程实现socket并发
socket多并发 socket可以实现单个客户端进行请求访问,它可以通过socketserver来实现并发功能呢,socketserver是通过启用多线程实现并发,在这里我们也可以通过gevent协 ...
- Mac OS X 显示和隐藏文件
参考: mac系统如何显示和隐藏文件 Mac OSX系统 显示和隐藏文件 1.显示隐藏文件: 打开Terminal,并输入以下命令: defaults write com.apple.finder A ...
- React项目中使用HighCharts
大家都知道BizCharts是基于react封装的一套图表工具,而HighCharts是基于jQuery的.但是由于本人对BizCharts甚是不熟,所以在react项目开发中选择了HighChart ...
- gevent-协程用法
文章介绍了一种采用循环的方式生产协程列表,并可以向协程函数传递参数... # 协程引用import gevent from gevent import monkey, pool monkey.patc ...