python学习 day14 (3月19日)----
04 json
# 1. 用于多种语言 交互 编程语言通用数据
# 内置的 不需要安装直接导入使用
import json # 导入
# # dumps loads dump load
# dic = {'1':'222'}
# print(json.dumps(dic))
# a = json.dumps(dic)
# print(type(a))
#
# d = json.loads(a)
# print(d,type(d)) # di = '{"1":4}' #把字典转过来
# d = json.loads(di)
# print(d)
# json.dump({'1':4},open('a','w',encoding='utf-8'))
#
# d = json.load(open('a','r',encoding='utf-8'))
# d['1'] = 10
#
# print(d)
# json.dump({'1':4},open('a','w',encoding='utf-8'))
d = json.load(open('a','r',encoding='utf-8'))
print(d) # 字符串 转换成字典
# 总结 :
'''''' #写入文件 load 和 dump()有持久化的功能
json.load() #参数文件句柄(r),将文件中字符串转换成字典
json.dump() #对象(字典)文件句柄(w),将 中字典转换成字符串写入文件
json.dumps() # 对象(字典) #将字典转换成字符串
json.load() #字符串(字典),将字符串转换成字典
''''''
05pickle
#__author : 'liuyang'
#date : 2019/3/19 0019 上午 10:15
# 从文件里读取 信息方便 并且可以操作 信息修改
# pickle 只支持python 传输速度快 字节传输
# dumps loads dump load
# dump load 持久化
import pickle
print(pickle.dumps({'':4}))#二进制 b'\x80\x03}q\x00X\x01\x00\x00\x001q\x01K\x04s.' print(pickle.loads(b'\x80\x03}q\x00X\x01\x00\x00\x001q\x01K\x04s.'))
#将 一堆 类似于 二进制 的东西转化成字典
pickle.dump({'':4},open('b','wb')) #字节
print(pickle.load(open('b','rb'))) #
'''
json,pickle 对比
# loads json 里的将字符串转化成字典 pickle 字节-》字典
dumps 字典-》字符串 字典-》字节
load 文件中的字符 ---》 字典 文件中的字节-》字典
dump 字典-》字符串写入文件 字典-》字节写入文件
''' import json #ATM机
d = {'user':'xxx','time':'2018-10-15','money':10000}
a = json.load(open('a','r',encoding='utf-8'))
print(d)
d['money'] += 500
d['money'] -= 100
json.dump(d,open('a','w',encoding='utf-8'))
print(d)
06shevle 文件+字典操作
import shelve
# f = shelve.open('c',writeback=True)
f = shelve.open('c') f['name'] = 'alex'
print(f['name'])
f['age'] = 18
print(f['name'],f['age']) f['name'] = ['alex','wusir']
print(f['name'])
print(f,type(f)) #查看不了字典 地址 和 <class 'shelve.DbfilenameShelf'>
for i in f:
print(i) #获得所有的键
print(f[i])
print(f.keys())
#等于下面
for i in f.values():
print(i) f['name'] = {'':4} #only 字符串
print(f['name'])
for i in f:
print(i,end=',')
#注意 : 以后会出现一个问题,咱们对字典的操作 内容,有时写不进去
# 在 open 写的时候 写个会写 writeback = True
print(f['name'])
f['name'] = 'wusir'
f['name'] = [1,2,3,4]
print(f['name']) #{'2': 4} 没有写进 wusir print(list(f.items()))
print(list(f.keys()))
print(list(f.values()))
总结上面三个
# json 最常用 ,前后端分离的时候数据交互 前后端分离 必会
#pickle python 不怎么常用 必了解
# shelve 建议使用它,它简单 不用来回写 必了解
07random
# 随机数可以做 验证码 微信红包
#__author : 'liuyang'
#date : 2019/3/19 0019 上午 11:21
import random #内置的
print(random.random()) # 0~1 之间的随机小数
print(random.randint(1,10)) #起始位置,终止位置,两边包含
print(random.randrange(1,21,2)) #起始位置,终止位置(不包含),步长
print(random.choice([1,2,3,4,5]),random.choice(['ev_j','taibai','alex']))
#从有序数据结构中随机选择一个
print(random.choices(['ev_j','taibai','alex'],k=2))
#随机选择两个,但是有重复
print(random.sample(['ev_j','taibai','alex'],2))#随机选择两个,没有重复的了 li = [1,2,3,4,5,6]
random.shuffle(li) #洗牌 打乱顺序
print(li) # 随机数可以做 验证码 微信红包
print(chr(65),chr(90),chr(97),chr(122))
#a-z A-Z
U = chr(random.randrange(65,91))
L = chr(random.randrange(97,123))
# for i in range(6):
# # N = random.randrange(0,10)
# print(U,L,random.randrange(0,10),random.randrange(0,10))
N1 = random.randrange(0,10)
N2 = random.randrange(0,10)
print(U,L,N1,N2)
08 os
#1.os 模块和当前电脑操作系统做交互
#os 内置模块
#文件夹
import os
# os.makedirs('app/a/b/c')#递归建文件***以下都是
# os.removedirs('app/a/b/c')#递归删除,当这个要删除的目录有文件就停止
# os.mkdir('ap') #创建单个文件
# os.rmdir('ap') #删除单个文件 目录不是空的。:报错
print(os.listdir('D:\Python\S20'))#查看某个目录下的内容
#['.idea', 'day01', 'day02', 'day04', 'day05', 'day06', 'day07', 'day07(第一次大作业)gouwuche',....
# #文件:
# os.remove()# 删除这个文件,删除了就不能恢复了*****
# os.rename() #修改文件的名字***** #操作系统
print(repr(os.sep)) #'\\' 路径符号
print(repr(os.linesep))#'\r\n' 换行符 print(os.pathsep)
#环境变量的分割
print(repr(os.name)) # 'nt' windows #哥三 超级有用
print(os.system('dir')) #没转码
print(os.popen('dir').read()) #代码执行 cmd 的功能***
#在写程序的时候可以发一些操作系统的指令
# 2019/03/19 周二 上午 10:16 1,113 04json.py
# 2019/03/19 周二 上午 10:36 1,145 05pickle.py
# 2019/03/19 周二 上午 11:20 1,234 06 shelve.py
# 2019/03/19 周二 上午 11:46 1,053 07 random.py
# 2019/03/19 周二 下午 12:01 943 08 os.py
# 在linux 系统上相当于发 shell命令
print(os.environ) # 环境变量* # 路径 os.path
print(os.path.abspath('a')) #获取当前文件的绝对路径****
print(os.path.split(r'D:\Python\S20\day14\morn\a'))
#将这个文件的绝对路径分成目录和文件
print(os.path.basename(r'D:\Python\S20\day14\morn\a'))#**
# 获取的是这个文件的名字
print(os.path.dirname(r'D:\Python\S20\day14\morn\a'))#***
#获取的是文件的目录 print(os.path.exists('c')) #相对路径 **
#判断这个文件是否存在
print(os.path.isabs('D:\Python\S20\day14\morn\b'))
#判断是否是绝对路径 # os.path.join()#路径拼接的 软件开发规规范 框架
print(os.path.join('c:\\','app','a'))#***** print(os.path.getsize('b')) #和下面一样***
print(os.stat('b').st_size) #获取文件大小,坑目录F
# print(os.getcwd()) #获取工作路径
print(os.chdir('D:\Python\S20\day14\morn'))#路径切换
print(os.getcwd())
#os.makedirs os.removedirs os.mkdir('ap') os.rmdir('ap') os.listdir
#os.remove() os.rename() os.popen('dir').read() os.path.abspath('a')
#os.path.basename os.path.basename os.path.dirname os.path.exists
#os.path.isabs os.path.join os.path.getsize
https://mm.edrawsoft.cn/map.html?obj=wxoa3v5wPYw7J5YTCXUoH1ZaSi0JAw/Personal/os.emmx
9.sys
#1. sys 模块 python 解释器交互的
# sys 内置的 代码服务器 linux 运行
# 写的代码叫后端 后端写好的代码 linux系统上-后端开发 -数据库(文件)ip+端口(ip里的空间)
# qq qq 之间的通信靠端口
import sys
print(sys.argv[-1]) #远程访问D:/Python/S20/day14/after/09sys.py 191.168.1.1 8080
#接受cmd 方式调用 后面的参数会传递过来 ***
# sys.path ******
# 自定义模块 添加到这个模块中
print(sys.path) #访问模块的时候 #['D:\\Python\\S20\\day14\\after', 'D:\\Python\\S20\\day04', 'D:\\Python\\S20',
print(sys.version) #版本获取 解释好的版本号#3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
print(sys.platform) #win32 #获取当前操作系统的平台位数
print(sys.exit(1)) #正常退出时0 异常是1
10.hashilib
1.加密算法 作用:当做密码
#判断 一致性
# 明文: liuyang
#密文:asjdfajldjafadflkadf 或者 *************
# 2.加密后不可逆 不能解
# 没有提示 世界上最难(金字塔)的都被中国人一年退了 没有绝对的安全
# (md5 反推)现在已经不安全了 被人反推了
# 3.sha1 ,sha256 ,sha512
import hashlib
md5 = hashlib.md5('盐'.encode('utf-8')) #选择加密方式 加盐
md5.update('liuyang'.encode('utf-8')) #将明文转成字节然后加密
print(md5.hexdigest())#生成密文:#6b649039a388694c7306cb4d14041a14
# 一些无聊的黑客把简单的(12345678) 哈希密文 都存到数据库上 去撞 遍历
# 一年前暴力破解 叫做撞库
md5 = hashlib.md5() #选择加密方式 加盐 (实例化一个对象)
md5.update('liuyang'.encode('utf-8')) #将明文转成字节然后加密
print('没加盐',md5.hexdigest())#生 sha1 = hashlib.sha1()
sha1.update('liuyang'.encode('utf-8'))
print(sha1.hexdigest()) sha512 = hashlib.sha512()
sha512.update('liuyang'.encode('utf-8'))
print(sha512.hexdigest()) print(len(sha512.hexdigest()))
a = 'dfca38e23cf278c6ce60f919aa4b1f89da1622efd25bd5f8a55b7b3cfb12d6b3042059894f82d5186118c8e63d8a74da37c0ed841eb8aeee7e2977b33fa84c5a'
print(len(a))# 128位 # 优点 : 安全 缺点 :慢
# md5 优点:安全 快 缺点:易破解
user , pwd = input('user|pwd:').strip().split('|')
import hashlib
md5 = hashlib.md5(str(user).encode('utf-8'))
md5.update(pwd.encode('utf-8'))
print(md5.hexdigest())
#liuyang|liuyang333 # 因为有一些人都用相同的密码但是不会用相同的用户名
# eac5796d45d8525d6d23c341730e87ab
#判断一致性
import hashlib
md5 = hashlib.md5() #选择加密方式 加盐 (实例化一个对象)
md5.update('liuyang'.encode('utf-8')) #将明文转成字节然后加密
print('没加盐',md5.hexdigest())#生
python学习 day14 (3月19日)----的更多相关文章
- Python 学习日志9月19日
9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...
- Python 学习日志9月20日
9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...
- Python学习日志9月17日 一周总结
周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...
- Python 学习日志9月21日
9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...
- Python学习日志9月13日
昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...
- Python学习日志9月16日
刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...
- python学习 day19 (3月26日)----(对象组合)
深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...
- Python学习日志9月15日
一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...
- Python学习日志9月14日
今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...
随机推荐
- 重建二叉树(python)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- Nginx的配置文件nginx.conf配置详解
user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数目.根据硬件调整,通常等于CPU数量或者2倍于CPU. ...
- python读写文件中read()、readline()和readlines()的用法
python中有三种读取文件的函数: read() readline() readlines() 然而它们的区别是什么呢,在平时用到时总会遇到,今天总结一下. 0. 前期工作 首先新建一个文件read ...
- ionic创建工程中遇到异常、错误及解决方法
1. 创建工程——download failed ionic start myApp tabs 遇到如下错误 Downloading--Failed! Error:Timeout of 25000ms ...
- mac item2 ssh
一.常规ssh登录流程 ssh登陆有三个参数,主机名,用户名,用户密码,流程都是一样. 1.ssh 用户名@主机名 2.返回包含(yes/no)的字符串,此时输入 “yes" 3.然后再返回 ...
- 专项测试——移动app安装包检测
一.背景和现状 安装包的重要性无需多提,针对安装包质量控制越来越严格和规范,包括证书.文件大小.安装成功率等,APP的证书及混淆是影响APP的安装成功率及代码安全性的很大因素,随着功能迭代,安装包也会 ...
- 【Linux 进程】孤儿进程、僵尸进程和守护进程
1.孤儿进程: 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作.孤儿进程是 ...
- 设a、b、c均是0到9之间的数字,abc、bcc是两个三位数,且有:abc+bcc=532。求满足条件的所有a、b、c的值。
题目描述 设a.b.c均是0到9之间的数字,abc.bcc是两个三位数,且有:abc+bcc=532.求满足条件的所有a.b.c的值. 输入描述: 题目没有任何输入. 输出描述: 请输出所有满足题目条 ...
- java爬取网页Unicode转UTF-8中文
unicode编码简而言之就是将每一个字符用16位2进制数标识.但是通常都用4位的16进制数标识. 例如: 1)中文字符串"你好"的unicode码为:\u60\u597d; 2) ...
- Head First Servlets & JSP 学习笔记 第三章 —— MVC迷你教程
临渊羡鱼,不如退而结网!是时候动手搞事情了! 我们的四大步骤: ①分析用户的视图(也就是浏览器要显示的东西),以及高层体系结构: (这个就是所谓的前端吧?用JSP?JSP可以当成Html来用吧?高层体 ...