开发者社区 问答 正文

python关键字with怎么使用

python关键字with怎么使用

展开
收起
保持可爱mmm 2019-12-11 13:53:08 382 分享 版权
1 条回答
写回答
取消 提交回答
  • 首先with的作用:  

    使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。

    例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

    我们知道使用try-except-finally语句可以处理异常,接下来我们介绍使用with语句处理与异常相关的工作

    with语句支持创建资源,抛出异常,释放资源等操作,并且代码简洁。

    with语句格式

    with 上下文表达式 [as 资源对象]: 对象操作 说明:

    上下文表达式,返回一个上下文管理对象

    如果指定了as语句,该对象并不赋值给as子句中的资源对象,而是将上下文管理器的__enter__()方法的返回值赋值给了资源对象。

    资源对象可以是单变量,也可以是元组。首先with的作用:  

    使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。

    例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

    我们知道使用try-except-finally语句可以处理异常,接下来我们介绍使用with语句处理与异常相关的工作

    with语句支持创建资源,抛出异常,释放资源等操作,并且代码简洁。

    with语句格式

    with 上下文表达式 [as 资源对象]: 对象操作 说明:

    上下文表达式,返回一个上下文管理对象

    如果指定了as语句,该对象并不赋值给as子句中的资源对象,而是将上下文管理器的__enter__()方法的返回值赋值给了资源对象。

    资源对象可以是单变量,也可以是元组。 使用with语句操作文件对象

    with open("/test.txt") as file:

    for aline in file:
    
        print(aline)
    

    解释说明: 这段代码使用with语句打开文件,如果顺路打开,则将文件对象赋值给file,然后用for语句遍历打印文件的每一行。当文件操作结束后,with语句关闭文件。如果这段代码运行过程中发生异常,with也会将文件关闭。

    这段代码使用finally语句实现如下:

    try:

    file = open("/test.txt")
    
    try:
    
        for aline in file:
    
            print(aline)
    
    except Exception as error:
    
        print(error)
    
    finally:
    
        file.close()
    

    except FileNotFoundError as err:

    print(err)
    

    我们也可以给with语句加上异常处理:

    try:

    with open("/test.txt") as file:
    
        for aline in file:
    
            print(aline)
    

    except Exception as error:

    print(error)
    

    通过对比可以发现:with语句在进行异常处理时代码简洁很多.

    问题来源于python学习网

    2019-12-11 13:53:33
    赞同 展开评论
问答分类:
问答地址: