赞
踩
# 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,相对于内层时全局变量,在外层就是局部变量)"""
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。