当前位置:   article > 正文

python中try-finally嵌套和文件指针关闭的问题_python try 嵌套

python try 嵌套
# f=open("test","w")
# try:
#
#     f=open("123.txt", "r")
# except Exception as e:
#     print(e)
# finally:
#     f.close()
#     print("文件关闭")
#f时全局变量就不会报错了




# try:
#
#     f=open("123.txt", "r")
# except Exception as e:
#     print(e)
# finally:
#     f.close()
#     print("文件关闭")
# """上面报错:NameError: name 'f' is not defined   因为在try语句块中定义的f和finally的都是局部变量
#
# """

import time
try:
    f=open(r"D:基础班入门软件、API.txt", "r",encoding="utf-8")

    print(f.readlines())
    f.seek(0,0)
    """这个 print(f.readlines())输不出来,说明这个"""
    int("abc")#有这个异常里层try就不会执行,f指针就没关闭,否则就会关闭
    try:
        while True:
            content=f.readline()
            if len(content)==0:
                break
            else:
                time.sleep(2)
                print(content)
    finally:
        f.close()
        print("文件关闭")
except Exception as e:
    print(e)



#f.close()
f.seek(0,0)

while True:
    content = f.readline()
    if len(content) == 0:
        break
    else:
        time.sleep(2)
        print(content)
"""python的try嵌套可以一定程度上解决局部文件指针变量无法关闭问题,就是在内层try-finally中关闭,说白了就是可以在本来外层try扫描的代码块外加一个try,

同时在后面加一个finally,这个finally中的f.close()只要里层try语句块执行,里面的finally语句块一定执行,但是里层try如果没执行,finally里的f.close()也执行不了

所以里层finally语句块的f.close()在里层try执行后一定会关闭外层try和里层try共有的f文件指针(这时外层的f就是内层的f,相对于内层时全局变量,在外层就是局部变量)"""
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/631490
推荐阅读
相关标签
  

闽ICP备14008679号