Python异常处理与文件打开

异常处理

捕获异常

#将可能出错的部分用try运行
#当执行出错,后面代码不会继续执行,转到错误处理代码即except,执行相应错误处理
#如果没有错误则会执行else,最后不论什么情况finally一定执行
try:
	print('try...')
	r=10/int('a')
	print('result',r)
#错误处理也是class,当执行父类的时候也会包含它的子类
#即xecept A在except B之前,A为B的父类。当出现错误B时只会执行靠前的A。
#一般都会使用“as e”代替当前错误
except ValueError as e:
	print('ValueError:',e)
except ZeroDivisionError as e:
	print('ZeroDivisionError:',e)
else:
	print('No error!')
finally:
	print('finally...')
print('END')

使用try…except…可以跨越多层调用,即当函数main()调用foo(),foo()调用bar()
当bar()出错时只要main()捕获到即可处理:

def foo(s):
	return 10/int(s)

def bar(s):
	return foo(s)*2

def main():
	try:
		bar('0')
	except Exception as e:
		print('Error:',e)
	finally:
		print('finally...')

只需要在合适的层次捕获错误即可。

python标准异常类点此查看

2.模块

模块通俗来说就是一个.py文件,模块是管理功能的代码。
python有自定义模块,如time,random等

自定义模块(同目录下的.py文件)
1.不要与系统模块重名
2.导入的功能代码不要与当前模块重名

#同目录下写一个.py文件,名字为first_module
num=10
print(num)
if __name__='__main__':
	print(num+10)

#在另一个文件导入first_module,可以通过as改名

import first_module as fm

#只导入一部分函数可用from module import 函数名,*可代表所有函数。
#from first_module import 函数名

#当import的时候会将导入的代码全部执行一遍
**#在执行哪个文件时,__name__输出为__main__,当import其他模块时__name__为模块名**
**#即可以使用if __name__='__main__':来使该模块被调用时哪些不执行。**
#执行结果为10。前一个为import时执行的,if __name__='__main__'后面的print未执行。

3.文件基础操作

读文件

#filepath为文件路径,method为读取方式有[r,rb,r+,rb+,w,wb,w+,wb+,a,ab,a+,ab+]
#r代表read,为默认值。w为write,b以二进制形式,+代表读写,a。具体描述可度娘。
>>>filepath=‘D:\360Downloads’
>>>method='r'
**#使用windows默认编码是gpk所以要将encoding改为utf-8,linux与mac默认为utf-8不用修改。**
>>>f=open(filepath,method,encoding=utf-8)

#当文件不存在会报错,若成功打开可以通过read()读取。
#f.read()括号内为空读取全部,为数字则读取指定字节。
>>>f.read()
#打开后最后一步需要关闭
>>>f.close()

为了简化open和close可以用with语句,则不用调用close()

with open(filepath,method,encoding=utf-8) as f:
	print(f.read())

如果文件很大可以使用read(size)或readlines()。readlines将所有内容按行返回成list

for line in f.readlines():
	print(line.strip)		#strip把末尾的'\n'删掉

写文件

#使用此方是将内容写入内存,并在空闲时写入,只有调用close()才能保证全部写入。
f=open(filepath,method,encoding=utf-8)
f.write('Hello world!')
f.close()
#用with方法可以保证全部写入。
with open(filepath,method,encoding=utf-8) as f:
	f.write('Hello world!')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值