python中with的用法

来源:互联网 发布:网络搜索 编辑:程序博客网 时间:2024/06/03 09:11

python中,有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,pythonwith语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄,也例如python与数据库的连接使用,需要先创建python与数据库的连接,使用后再对其进行关闭,如此使用比较麻烦,做如下示例介绍

不使用with语句进行文件处理:

file = open("./foo.txt",”r”)

data = file.read()

file.close()

Tips:

这里有两个问题:

一是可能忘记关闭文件句柄;
二是文件读取数据发生异常,没有进行任何处理。将出现程序报错,异常终止!

下面是处理异常的加强版本:

try:

f = open('xxx')

except:

    print 'fail to open'

exit(-1)

try:

code

except:

    Code

finally:

f.close()

虽然这段代码运行良好,但是太冗长了。

这时候就是with一展身手的时候了。除了有更优雅的语法,with还可以很好的处理上下文环境产生的异常。

使用with进行python的文件处理:

With open(“./foo.txt”) as file:

Data = file.read()

With用法原理:紧跟with后面的语句被求值后,返回对象的 __enter__() 方法被调用,这个方法的返回值将被赋值给as后面的变量。

多个相同时使用时写法如下:

with open("./x.txt") as f1, open('./xxx.txt') as f2:

Data_1 = f1.read()

Data_2 = f2.read()

Print(data_1,data_2)

原创粉丝点击