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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)