【0806 | Day 9】异常处理/基本的文件操作
一、异常处理
异常即报错,可分为语法异常和逻辑异常
1. 语法异常
举个栗子
if #报错 syntaxerror 0 = 1 #报错 syntaxerror ...
正经地举个栗子
print(1) try: num = input('请输入: ') #1 dic = {'0':1} #2 print(dic[num]) #3 print(3) #4 1 / int(num) #5 print(4) #6 except Exception as e: #Exception包括'ZerodivisionError'和'Keyerror' #异常捕捉 print('e:',e) #7 print(2) #8 #第一种:输入0 1 请输入: 0 1 #2 & #3 3 #4 #5 & #6不执行 e: division by zero #7 2 #8 #第二种:输入非0 #2 & #3不执行 1 请输入: 2 e: '2' #7 返回输入值(即不在字典内) 2 #8
2. 逻辑异常
举个栗子
1/0 #报错,逻辑异常有多种形式
正经地举个栗子
print(1) try: #尝试一下 print(3) #执行/自上而下 1/0 #报错不影响 print(4) #不执行/自上而下 except: #除此之外 pass print(2) #1 #3 #2
二、基本的文件操作
1、打开文件的三种方式
#第一步,找到文件路径 path = r'D:\fxyadela\上课练习\test.py' #绝对路径 path = r'test.py' #相对路径 #第二步,双击打开 f = open(path,'r或w') print(f) #第三步,看文件 data = f.read() print(data) #第四步,写文件 f.write('nick young') #第五步,关闭文件 f.close()
#只写,返回地址并在test.py中输入'Nick Young' path = r'D:\fxyadela\上课练习\test.py' #绝对路径 f = open(path,'w') print(f) f.write('nick young') f.close() #<_io.TextIOWrapper name='D:\\fxyadela\\上课练习\\test.py' mode='w' encoding='cp936'> #Nick Young #在test.py中
#只读,返回地址和test.py中的字符 #假设test.py中输入'Nick Young' path = r'D:\fxyadela\上课练习\test.py' #绝对路径 f = open(path,'r') print(f) data = f.read() print(data) f.close() #<_io.TextIOWrapper name='D:\\fxyadela\\上课练习\\test.py' mode='r' encoding='cp936'> #Nick Young
绝对路径: 从根目录开始找
相对路径: 当前执行文件所在的文件夹开始找
2、早期读写共同执行时存在的问题
1.文件既可读又可写,假设文件内容为1
2.系统在1后面追加2(需要10s)
3.在这10s内,系统读文件需要5秒,此时读出只有1,系统会写2
4.等读完文件,再写完2,此时系统10s结束,已经变为12
5.则两者12相遇,报错
注意: 所以,只读or只写
3、关闭文件的注意事项
f = open('test.py','r') data = f.read() print(data) del f #不关闭操作系统,只删除f引用及在内存中的占用 f = open('test.py','r') data = f.read() try: 1/0 print(data) except Exception as e: print('e:',e) finally: f.close() #既删除f引用,又会命令操作系统关闭对外存文件的占用
4.TODO用法
if True: #TODO:猜年龄逻辑运算(类似于索引) pass