open('test.txt', 'r') # FileNotFoundError: [Errno 2] No such file or directory: 'test.txt' open('test.txt', 'w') f = open('test.txt', 'a+') f.read() f.write('abc')
2.读写模式:+
使用方式:r+ / w+ / a+ - 读写操作
3.通过文件上下文打开文件
“”"
文件对象 = open()
文件对象.read()/文件对象.write()
文件对象.close()
with open() as 文件对象:
文件对象.read()/文件对象.write()
“”"
with open('test.txt', 'w') as f: f.write('abc') f.write('123')
1.什么是json
json是一种通用的数据格式。
json支持的类型:
数字 - 包含所有的整数和小数,表示的时候直接写,例如:900, -12, 0.34, 3e4
字符串 - 用双引号引起来的数据(支持转义字符),例如:“abc”, “试试234”, “abc\n123”
布尔 - 只有true和false两个值,表示的时候直接写:true, false
空值 - null, 表示的时候直接写:null
数组 - 相当于Python中的列表,[元素1, 元素2,…], 例如:[100, 200, “abc”, “abc\n123”, false, [1, 2, 3]]
字典 - 相当于Python中的字典, 但是键只能是字符串,例如:{“name”: “小明”, “age”: 18}
“”"
loads(json格式的字符串) - 将json格式的字符串转换成对应的python数据
json格式的字符串: 字符串的内容是一个合法的json数据(去掉字符串外面的引号,剩下的部分是一个合法的json数据)
注:loads里面不能直接加’变量’,可以将满足json数据要求的数据转为str格式,再直接放入loads
例:
q=[true] print(json.loads('q'))#报错 w=str(q) print(json.loads(w))#[True]
dumps(python数据) - 将python数据转换对应的json格式的字符串
“”"
import json result = json.loads('"abc"') print(result) # 'abc' a=[120, "abc"] result = json.loads(r'a') print(result, type(result)) # [120, 'abc', True, None] <class 'list'> result = json.dumps([100, 'abc', True, None]) print(result, type(result)) # [100, "abc", true, null] <class 'str'>
什么时候需要捕获异常:明知道某个位置可能会出现异常,但是不是因为代码不符合语法造成,而是使用者使用不当造成,
但是又不希望这个地方出现异常的时候终止程序的执行。
“”"
3. 怎么捕获
“”"
结构一:捕获任意异常
try:
需要捕获异常的代码
except:
捕获到异常后会执行的代码
finally:
代码段(写遗书)
结构二:捕获指定类型的异常
try:
需要捕获异常的代码
except 异常类型:
捕获到异常后会执行的代码
finally:
代码段
结构三:同时捕获多种异常
try:
需要捕获异常的代码
except (异常类型1, 异常类型2,…):
捕获到异常后会执行的代码
finally:
代码段
结构四:同时捕获多种异常
try:
需要捕获异常的代码
except 异常类型1:
处理方法1
except 异常类型2:
处理方法2
…
finally:
代码段
“”"
4. finally
finally后面的代码不管前面是否出现异常,也不管异常是否被捕获都会执行
5.抛出异常 - 主动让程序崩溃
raise 异常类型
class AgeError(Exception): def __str__(self): return '年龄值错误,年龄的有效范围是1 ~ 200' age = int(input('请输入年龄:')) if age <= 0 or age > 200: raise AgeError # print('--------') # raise KeyError # print('++++++++')
#学生管理系统
登录系统完成, 学生管理暂时只写完添加学生功能
import json # ===登录系统=== def xiton(): while True: a=zhuye() if a==1:#登录 denglu() elif a==2:#注册 zhuche() elif a==3:#退出 break else: print('操作输入错误,请重试\n') continue # 登录系统_主页 def zhuye(): wel = print('========欢迎来到XX管理系统==========\n') print('*1.登录\n*2.注册\n*3.退出\n') try: chaozhuo = int(input('请选择操作:')) except: print('操作输入错误,请重试\n') return return chaozhuo # 登录系统_账号输入 def shuru_zanghao(): a = input('请输入账号:') b = input('请输入密码:') return a, b # 创建保存账号的文件 def kon(): try: q = open('t1.json', 'r') q.close() except: q = open('t1.json', 'w') we = json.dumps(['学生管理系统',{}]) q.write(we) q.close() return # 登录系统_登录功能 def denglu(): a,b=shuru_zanghao() kon() q = open('t1.json', 'r') try: e = json.loads(str(q.read())) q.close() if a in e[1]: if b == e[1][a]['密码']: print('登录成功\n') stuxiton(a,e) else: print('密码错误,请重试\n') else: print('账号未注册\n') except: print('账号未注册\n') # 登录系统_注册功能 def zhuche(): kon() a,b=shuru_zanghao() q=open('t1.json', 'r') try: e = json.loads(str(q.read())) q.close() if a in e[1]: print('该账号已被注册\n') else: q=open('t1.json','w') e[1][a]={'密码':b} q.write(json.dumps(e)) q.close() print('注册成功!\n') except: print('该账号已被注册\n') # ==学生管理系统== def stuxiton(a,e): while True: xuanzhe=stuxiton_zhuye(a) # 1.添加学生\n 2.查看学生\n 3.修改学生信息\n 4.删除学生\n 5.返回' if xuanzhe==1:#添加学生 stuxiton_tianjia(a,e) elif xuanzhe==2:#查看学生 pass elif xuanzhe==3:#修改学生信息 pass elif xuanzhe==4:#删除学生 pass elif xuanzhe==5: break else: print('错误操作选择,请输入1~5的数字') continue # 学生管理系统_主页 def stuxiton_zhuye(a): print(f'========欢迎{a}使用学生管理系统========') print(' 1.添加学生\n 2.查看学生\n 3.修改学生信息\n 4.删除学生\n 5.返回') print('========================') a=int(input('请选择:')) print('========================') return a # 学生管理系统_添加学生 def stuxiton_tianjia(a,e): 学号 = input('请输入学号:') 姓名 = input('请输入姓名:') 年龄 = input('请输入年龄:') 电话 = input('请输入电话:') q=open('t1.json','r') w=json.loads(str(q.read())) if 学号==w[2][a]['student_num']: print('该学号已存在,添加失败') elif 姓名==w[2][a]['name']: print('该姓名已存在,添加失败') else: stu_dict1 = {'student_num': 学号, 'name': 姓名, 'age': 年龄, 'tel': 电话} e[1][a]['stu']=stu_dict1 q=open('t1.json','w') q.write(json.dumps(e)) q.close() print('添加成功') if __name__ == '__main__': xiton()