python中的withas
① 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是什么意思
关键字
with 的一般执行过程
一段基本的 with 表达式,其结构是这样的:
with EXPR as VAR:
BLOCK
其中: EXPR 可以是任意表达式; as VAR 是可选的。
③ mysql 中能使用with as 吗
with as 是 python 的语法 如下:
比较繁琐 也失去了 python 语言本身的优雅
mysql 里面并没有类似的用法
④ python里的with open(file name) as file obj是什么意思
就是打开一个文件并声明变量file obj 接收打开后的文件对象,同时with语句块会在程序结束时候自动关闭打开的文件句柄,不会造成内存存泄露之后的问题
大概等效于
try:
file_obj = open(file_name)
#with里面你写的代码
except Exception:
raise Exception
finally:
if file_obj :
file_obj.close()
⑤ Python with as为什么无法捕获异常
with在打开文件的这个操作中的作用是保证每次正常打开文件后,不论遇到什么,最后都会执行文件的关闭操作,避免脚本中遗漏。但是他自身并没有抓取异常的处理机制。
with open("asdasdas") as a:
print("打开成功")
do_something()
这段代码的含义,相当于打开了文件“asdasdas”后打印了“打开成功”的字样后,又处理了do_something()这段逻辑。不论do_something()这段逻辑正常执行结束,还是抛出异常,都会保证最终“asdasdas”这个文件都会被关闭。避免因为文件未被关闭而导致的种种问题。
你的代码可以改为以下部分,这样就可以catch到读取文件中的异常了。
try:
with open("asdasdas") as a:
print("打开成功")
except:
print("打开失败")
⑥ python with语句能不能把后面的"as <file>"删掉
不能去掉as file
因为打开文件要给文件绑定一个对象,也就是文件句柄,这个as xxx 就是那个文件句柄。
如果不加,就会有错误发生
⑦ python with函数怎么用
with在python中并不是函数,是一个关键词语句,比如if就是关键词语句。
with大多用来打开一个文档。
比如:
with open('test.txt') as f:
f.read()
这样就可以读取名为test的文档里的内容,并且使用with语句不需要我们手动再调用文件的close()方法来关闭文件,如果test.txt文档对象不再被使用,with会自动关闭文档。比较智能一点。