python学习No9

python学习No9,第1张

概述python学习No9sys模块序列化和反序列化将数据写入文件夹中pickle和json使用的区别程序的异常处理继承小练习sys模块sys.stdin接受用户的输入,键盘读取输入的数据sys.stdout标准输出,默认控制台sys.stderr错误输出,默认控制台nstdinimportsys#s_in=sys.stdi

python学习No9@H_403_8@@H_403_8@@H_403_8@sys模块序列化和反序列化@H_403_8@将数据写入文件夹中pickle和json使用的区别程序的异常处理继承小练习

sys模块

sys.stdin接受用户的输入,键盘读取输入的数据
sys.stdout 标准输出,默认控制台
sys.stderr错误输出,默认控制台n
stdin

import sys#s_in=sys.stdinwhile True:    y=s_in.readline()    if y=='\n':        break    print(y)sys.stdout=ope

stdout(改变控制台)

print('hello')print('yes')print(1/0)print('------比较上下-----两个代码')sys.stdout=open('stdout.txt','w',enCoding='utf8')print('hello')print('yes')print(1/0)

stderr

sys.stderr=open('stdout.txt','w',enCoding='utf8')print(1/0)
序列化和反序列化

序列化:将数据从内存持久化保存到硬盘的过程
反序列化:将数据将硬盘加载到内存的过程

将数据写入文件夹中
file=open('name.txt','w',enCoding='utf8')# names=['zhangsan','lisi','jack','tony']# file.write(names)#注释报错。由此可见,write只能写入字符串或者二进制file.write('aaa')

将数据转换成字符串(repr/str),或者二进制可以写入文件夹。
转换成字符串可以用Json更常用,区别在于Json里使用“”表示字符串
转换成二进制:使用pickle

Json里将数据持久的两个方法:
dumps:将数据转换成Json字符串,不会将字符串保存在文件里,要保存得自己write
dump:可以直接将数据转换成Json字符串的同时写入文件

#Json本质就是字符串,区别在于Json要用双引号表示字符串import Jsonnames=['zhangsan','lisi','jack']x=Json.dumps(names)#dumps将数据转换成字符串#print(x)file=open('names.txt','w',enCoding='utf8')file.write(x)file.close()
names=['zhangsan','lisi','jack']file=open('names.txt','w',enCoding='utf8')Json.dump(names,file)

Json的反序列也有两个方法:
loads:将Json字符串加载成为python里的数据
load:读取文件,把读取的内容加载成为python里的数据

x='{"name":"zhangsan","age":18}'p=Json.loads(x)print(p,type(p))print(p['name'])#loadfile1=open('name.txt','r',enCoding='utf8')y=Json.load(file1)print(y)print(y[0])file1.close()

pickle

序列化:
dumps:将python数据转换成二进制
dump:将python数据转换成二进制,同时保存到指定文件

#dumpsnames=['zhangsan','lisi','jIEke']b_name=pickle.dumps(names)file=open('name.txt','wb')file.write(b_name)#写入 的是二进制,不是纯文本file.close()file1=open('name.txt','rb')x=file1.read()y=pickle.loads(x)print(y)
#dumpnames=['zhangsan','lisi','jIEke']file2=open('names.txt','wb')pickle.dump(names,file2)

反序列化:
loads:将二进制加载成为python数据
load:读取文件,并将文件二进制内容加载成为python

#利用load读取file2=open('names.txt','wb')pickle.dump(names,file2)file2.close()file3=open('names.txt','rb')y=pickle.load(file3)print(y)
#原封不动保存class Dog(object):    def __init__(self,name,color):        self.name=name        self.color=color    def eat(self):        print(self.name+'正在吃东西')d=Dog('大黄','黄色')#保存到文件里pickle.dump(d,open('dog.txt','wb'))#从文件里加载出来a=pickle.load(open('dog.txt','rb'))a.eat()print(a.name,a.color)
pickle和Json使用的区别

pickle用来将数据原封不动转换为二进制,但是这个二进制只能用python识别。
Json只能保存一部分信息,作用是在不同的平台里传递数据,储存的是基本的数据类型

程序的异常处理

如下代码就是异常代码,除数不能为0,报错是程序对代码的健壮性,就像人的痛感,实际也是一种保护机制。

def div(a,b):    return a/bx=div(5,0)x+=3print(x)

避免程序报错崩的做法:(异常处理的模式)

try…except 语句来处理程序运行的异常

def div(a,b):    return a/btry:    x=div(5,0)    print('aaaaa')#出错此行就不打印except Exception as e:    print("程序出错了")else:    print(x)
继承小练习

有一个学生类Student属性:学号姓名年龄性别成绩,班级类,方法:查看班级中学生信息,查看指定学号学生信息,查看班级中成绩不及格学生信息,将班级中学生按照成绩降序排列。

class Student(object):    def __init__(self,number,name,age,gender,score):        self.name=name        self.number=number        self.age=age        self.gender=gender        self.score=score    def __str__(self):        return ('编号:{},性别:{},年龄:{},性别:{},分数:{}'.format(self.number, self.name, self.age, self.gender, self.score))class Grade(object):    def __init__(self,name,students):        self.name=name        self.students=students    def show_all(self):        for student in self.students:            print(student)    def Failed_students(self):        result=filter(lambda student:student.score<60,self.students)        for x in result:            print(x)    def order_students(self):        self.students.sort(key=lambda s:s.score,reverse=True)s1=Student(1,'张三',18,'male',80)s2=Student(3,'ll',18,'male',99)s3=Student(10,'tony',90,'male',89)s4=Student(7,'jack',23,'famle',77)s5=Student(25,'jerry',90,'famle',56)g=Grade('大一2班',[s1,s2,s3,s4,s5])g.show_all()print()g.Failed_students()print()g.order_students()for student in g.students:    print(student)
总结

以上是内存溢出为你收集整理的python学习No9全部内容,希望文章能够帮你解决python学习No9所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1188031.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存