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()     #字符串(字典),将字符串转换成字典
''''''
View Code

05pickle

#__author : 'liuyang' 
#date : 2019/3/19 0019 上午 10:15
# 从文件里读取 信息方便  并且可以操作 信息修改
# pickle 只支持python  传输速度快  字节传输
# dumps loads dump load
# dump load  持久化
import pickle
print(pickle.dumps({'1':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({'2':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)
View Code

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'] = {'2':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()))
View Code

总结上面三个

# json 最常用 ,前后端分离的时候数据交互  前后端分离 必会
#pickle   python 不怎么常用                      必了解
# shelve 建议使用它,它简单 不用来回写             必了解
View Code
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)  
View Code

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())
View Code
#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

猜你喜欢

转载自www.cnblogs.com/Doner/p/10557835.html
今日推荐