600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python异常处理与文件打开

Python异常处理与文件打开

时间:2020-05-11 16:22:03

相关推荐

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)*2def 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_modulenum=10print(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!')

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。