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日)----的更多相关文章

  1. Python 学习日志9月19日

    9月19日 周二 今天是普通的一天,昨天也是普通的一天,刚才我差点忘记写日志,突然想起来有个事情没做,回来写. 今天早晨学习<Head First HTML and CSS>第十一章节“布 ...

  2. Python 学习日志9月20日

    9月20日 周三 多大年龄了,还活得像个小孩.——急什么,人生又不长. 你习惯了思考宇宙星辰,一百年真的不长,一生也就不那么长,许多人的价值观念你也就无法理解.同样,许多人也无法理解你的价值观念,感兴 ...

  3. Python学习日志9月17日 一周总结

    周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...

  4. Python 学习日志9月21日

    9月21日 周四 今天是个特殊的日子吗,总感觉9月21这个日子听着怪怪的. 今天早晨看<Head First HTML and CSS>第13章节“表格和更多列表”,内容不多,看完并做了详 ...

  5. Python学习日志9月13日

    昨天的学习日志没有写,乱忙了一整天,政治电脑. 好奇心重,想要给电脑装上传说中LInux操作系统,各种小问题折腾到半夜,今天又折腾到晚上才真正的装上系统. 可是装上系统后又发现各种的不好用.虽然界面比 ...

  6. Python学习日志9月16日

    刚才我差点睡着了,差资料的时候太费神,有些累. 今天早晨学习了<head first HTML and CSS>,今天把昨天没看了的关于字体和颜色的一章节看完了,真长.我详细的做了笔记,并 ...

  7. python学习 day19 (3月26日)----(对象组合)

    深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...

  8. Python学习日志9月15日

    一周就要过去了,而我跟一周以前没什么区别.回想一下,我这周做了什么事情呢.恍然若失.这周的精力都浪费在很多不必要的事情上了.学过一片古文,讲后羿学射箭,他有一个同学跟他一样聪明,在一起学习.后羿呢,专 ...

  9. Python学习日志9月14日

    今天早晨又没有专心致志的学习,我感觉我可能是累了,需要减轻学习的程度来调整一下咯.这几天装电脑弄的昏天暗地的,身体有点吃不消了.时间真是神奇的魔法,这半个月来,每隔几天都有想要改变策略的想法.今天早晨 ...

随机推荐

  1. 网站访问者UA检测及跳转

    /*!* UA检测及跳转*/;(function(){ var whatdevice = {}; var myUA = window.navigator.userAgent.toLowerCase() ...

  2. ELK Deployed

    Enviroment prepare rpm -qa | grep java wget http://download.oracle.com/otn-pub/java/jdk/8u171-b11/51 ...

  3. ceph 文件系统(cephfs) -- 初体验

    一.介绍: ceph MDS 是元数据服务器,只有ceph 文件系统(cephFS)才会需要. cephFS 在RADOS 层之上 提供一个兼容POSIX 的文件系统.他是用MDS 作为守护进程,负责 ...

  4. 有关vim的一些命令

    所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...

  5. while 解决 10000米绳子 对折当 绳长小于5米时求绳的对折次数

    public static void main(String args[]){ double length = 10000; int day = 0; while(day > 5){ lengt ...

  6. 图片Bitmap在本地的存储与读取 File

    将Bitmap存储到本地: public void SaveImage(Bitmap image, String user_id){ //照片通常存在DCIM文件夹中 String sdCardDir ...

  7. 网页中flash设置

    我们现在大部分人做网页,都是直接用DW插入flash,而且DW也是所见即所得,直接生成了相应的flash显示代码.可是我们又有多少人了解这些直接由DW生成的代码呢?其实我接触flash player标 ...

  8. 流(Stream)、文件(File)和IO

    读取控制台输入 Java 的控制台输入由 System.in 完成. 为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流. ...

  9. dev-client.js-配合dev-server.js监听html文件改动也能够触发自动刷新

    // 引入 webpack-hot-middleware/client var hotClient = require('webpack-hot-middleware/client'); // 订阅事 ...

  10. thinkphp装修平台源码

    每日签到微擎微赞自助授权中心站长工具(new)☜=每日新帖=微信开发手册VIP优惠活动 开启辅助访问切换到宽版 用户名 自动登录  找回密码 密码 登录  立即注册 只需一步,快速开始 首页 微鱼商业 ...