with语句python
‘壹’ python新手,怎么使用with语句对于with语句及其用法有哪些
比如打开一个文件
with open (filename,'r') as fp:
for line in fp:
print line
with语句主要是实现打开和关闭简写为一条语句,上面的例子在for循环完成后 文件自动关闭
‘贰’ 如何用python 中with 用法
要使用 with 语句,首先要明白上下文管理器这一概念。有了上下文管理器,with 语句才能工作。
下面是一组与上下文管理器和with 语句有关的概念。
上下文管理协议(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持
该协议的对象要实现这两个方法。
上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了
__enter__() 和 __exit__() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,
负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,
也可以通过直接调用其方法来使用。
运行时上下文(runtime context):由上下文管理器创建,通过上下文管理器的 __enter__() 和
__exit__() 方法实现,__enter__() 方法在语句体执行之前进入运行时上下文,__exit__() 在
语句体执行完后从运行时上下文退出。with 语句支持运行时上下文这一概念。
上下文表达式(Context Expression):with 语句中跟在关键字 with 之后的表达式,该表达式
要返回一个上下文管理器对象。
‘叁’ python中with语句的作用
with语句相当于你定义一个类的时候定义了__enter__()和__exit__()这个两个方法。
在我们进行文件操作的的时候会用到open方法,后面有了with open以后就不再只使用open方法了,为什么?因为with open方法简单,我们不用再去管关闭文件了,即使中间发生异常,with open也会帮我们把文件关闭掉,以下示例演示下with open方法;
class File(object):
"""文件操作类"""
def __init__(self, filepath, mode):
self.filepath = filepath
self.mode = mode
def __enter__(self):
"""打开文件"""
self.file = open(self.filepath, self.mode)
print("打开文件")
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
"""关闭文件"""
print("关闭文件")
self.file.close()
if __name__ == '__main__':
with File('log.log', 'r') as file:
file.write("家啊")
可以看出来有了__enter__()和__exit__(),我们自定义的类也可以使用with了
‘肆’ Python中的with...as用法介绍
这篇文章主要介绍了Python中的with...as用法介绍,本文直接给出用法实例,需要的朋友可以参考下
这个语法是用来代替传统的try...finally语法的。
代码如下:
with
EXPRESSION
[
as
VARIABLE]
WITH-BLOCK
基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。
紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。
代码如下:
file
=
open("/tmp/foo.txt")
try:
data
=
file.read()
finally:
file.close()
使用with...as...的方式替换,修改后的代码是:
代码如下:
with
open("/tmp/foo.txt")
as
file:
data
=
file.read()
#!/usr/bin/env
python
#
with_example01.py
class
Sample:
def
__enter__(self):
print
"In
__enter__()"
return
"Foo"
def
__exit__(self,
type,
value,
trace):
print
"In
__exit__()"
def
get_sample():
return
Sample()
with
get_sample()
as
sample:
print
"sample:",
sample
执行结果为
代码如下:
In
__enter__()
sample:
Foo
In
__exit__()
1.
__enter__()方法被执行
2.
__enter__()方法返回的值
-
这个例子中是"Foo",赋值给变量'sample'
3.
执行代码块,打印变量"sample"的值为
"Foo"
4.
__exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数-
val,
type
和
trace。这些参数在异常处理中相当有用。我们来改一下代码,看看具体如何工作的。
‘伍’ python的with语句怎样嵌套使用
with obj1:
with obj2:
obj1 xxx
obj2 xxx
# 你自己的代码
这样就可以了
‘陆’ python with语句能不能把后面的"as <file>"删掉
不能去掉as file
因为打开文件要给文件绑定一个对象,也就是文件句柄,这个as xxx 就是那个文件句柄。
如果不加,就会有错误发生
‘柒’ python with语句有什么用
如果不用with语句,代码如下:
file = open("/tmp/foo.txt")
data = file.read()
file.close()
这里有两个问题。一是可能忘记关闭文件句柄;二是文件读取数据发生异常,没有进行任何处理。下面是处理异常的加强版本:file = open("/tmp/foo.txt")
try:
data = file.read()
finally:
file.close()
‘捌’ python with...as
简单的说with/as语句的设计是作为常见的try/finally用法的模式替代方案.
用于定义必须执行的终止或清理行为.
例如下面的用法可以确保文件打开之后一定自动关闭,无论是否发生异常
withopen(r'c:\mis.data')as myfile:
do something
‘玖’ python中with python中with as 是什么意思刚入门求解释!!!
这个语法是用来代替传统的try...finally语法的。
with EXPRESSION [ as VARIABLE] WITH-BLOCK
基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。
紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。
file=open("/tmp/foo.txt")
try:
data=file.read()
finally:
file.close()
使用with...as...的方式替换,修改后的代码是:
withopen("/tmp/foo.txt")asfile:
data=file.read()
#!/usr/bin/envpython
#with_example01.py
classSample:
def__enter__(self):
print"In__enter__()"
return"Foo"
def__exit__(self,type,value,trace):
print"In__exit__()"
defget_sample():
returnSample()
withget_sample()assample:
print"sample:",sample
执行结果为
In__enter__()
sample:Foo
In__exit__()
1. __enter__()方法被执行
2. __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量'sample'
3. 执行代码块,打印变量"sample"的值为 "Foo"
4. __exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。
请采纳!
‘拾’ python with函数怎么用
with在python中并不是函数,是一个关键词语句,比如if就是关键词语句。
with大多用来打开一个文档。
比如:
with open('test.txt') as f:
f.read()
这样就可以读取名为test的文档里的内容,并且使用with语句不需要我们手动再调用文件的close()方法来关闭文件,如果test.txt文档对象不再被使用,with会自动关闭文档。比较智能一点。