python模块学习-day14

一,序列化

将列表,字典数据类型的内容转化为字符串类型的整个过程就叫做序列化

序列化的目的:

  1,以某种形式使自定义对象(数据)持久化

  2,将对象从一个地方传递到另一个地方

  3,使程序更具有维护性

序列化----json模块:

json模块提供四个功能:dumps,loads,dump,load

  dumps:将字典,列表的数据序列化为str数据类型【序列化中文必须指定不适用ascii码】

  loads:将str数据类型的数据反序列化为字典,列表

  dump:将字典,列表的数据序列化并且存入文件中

  load:将文件中的str数据反序列化为字典,列表并返回

import json
k = {'username':'Bob','age':17}
s = json.dumps(k)  # 序列化字典,将字典序列化为str类型
print(s,type(s))
s1 = json.loads(s)  # 反序列化str,将str转化为字典
print(s1,type(s1))



lis = [1,2,3,4,5]
x = json.dumps(lis)  # 将列表序列化为str
y = json.loads(x)  # 将str数据反序列化为列表
print(y,type(y))
序列化与反序列化【字典,列表】
import json

f = open('json_file','w')
dic = {'username':'barry','age':25}
json.dump(dic,f)  # 将字典序列化为字符串并传入文件
f.close()

f = open('json_file')
dic2 = json.load(f)  # 将文件中的字符串反序列化为字典取出
print(dic2,type(dic2))
f.close()
序列化,反序列化的写入与读取
import json

l = [1,[1,2,3,4],2,{'username':'alex','age':18}]
s2 = json.dumps(l)
print(s2,type(s2))
l1 = json.loads(s2)
print(l1,type(l1))
序列化,反序列化嵌套数据类型
print(json.dumps('中国',ensure_ascii=False)) # 序列化中文的时候,必须指定不适用ascii编码
序列化中文
import json

data = {'username':['李华','二愣子'],'sex':'male','age':16}
json_dic2 = json.dumps(data,sort_keys=True,indent=2,separators=(',',':'),ensure_ascii=False)
print(json_dic2)
序列化的格式化输出

序列化----pickle模块

和json模块基本一样,区别是:json模块是把字典,列表数据序列化为str;pickle是把任意数据类型的数据序列化为二进制内容

那么为什么不直接使用pickle呢?

pickle是python专属的模块,存在局限性;而json是通用的,在java,c,c++中都可以使用

三,random模块

random模块:随机返回数字。     应用场景:验证码的下发

import random
# 随机小数
print(random.random())  # 随机返回一个0-1之间的小数
print(random.uniform(1,10))  # 随即返回一个范围内的小数
random随机返回小数
import random
# 随机整数
print(random.randint(1,10))  # 随机返回范围内的一个整数(左右两边最大最小值都可以被随机到)
print(random.randrange(1,20,2)) # 增加步长概念,返回范围内奇数
随机返回整数
# 随机选择返回一个选择
print(random.choice([1,2,3,4,5,6]))  # 随机返回列表或元组中的一个元素【仅限列表和元组】
print(random.sample([1,2,3,4,5,6,7,8],3))  # 随机返回列表或元祖中的n个元素,并组成列表【n可以自定义】
随机返回一个规定范围的选择
import random

# 打乱列表顺序
l = [1,2,3,4,5,6]
random.shuffle(l)  # 打乱列表中的字符顺序【仅限列表】
print(l)
随机打乱规定范围内数据的顺序
import random

def v_code():
    code = ''
    for i in range(5):
        num = random.randint(0, 9)  # 获取0-9之间一个任意的数字(整形)
        alf = chr(random.randint(65, 90))  # 获取65-90之间一个任意的数字,然后转化成ascii码对应的内容
        add = random.choice([num, alf])  # 从num-alf之间获取一个任意的字符
        code = "".join([code, str(add)])  # 拼接字符串(5次),最后形成一个5个字符长度的验证码
    return code
print(v_code())
生成随机验证码的试题

随机生成验证码提出一个方法:chr   他的作用是把你给他的字符按照ascii码中对应的内容返回

四,os模块

os模块是与操作系统交互的接口

os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息

os.system("bash command")  运行shell命令,直接显示
os.popen("bash command).read()  运行shell命令,获取执行结果
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd

os.path
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回 
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
stat 结构:

st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串 win下为;,Linux下为:
os.name    输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

五,sys模块

sys模块是与python解释器交互的接口

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0),错误退出sys.exit(1)
sys.version        获取Python解释程序的版本信息
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
import sys
try:
    sys.exit(1)
except SystemExit as e:
    print(e)
异常处理和状态

猜你喜欢

转载自www.cnblogs.com/dpStarrysky/p/10559751.html