課程
/后端開發
/Python
/Python錯誤和異常
遇到異常之后,with as 到底能不能關閉文件呢?
2016-08-12
源自:Python錯誤和異常 2-6
正在回答
我覺得不能,所以用with-as操作文件時,最好用try-except捕獲可能發生的異常,只有有了try-except文件才能保證一定被關閉,當沒有try-except捕獲異常時,一旦異常發生,異常就被提交給python解釋器了,導致程序不再向下執行,故文件未關閉
慕粉3830120
自己運行一下代碼就知道了
try: ? ?with open('t1.txt', 'r') as f1: ? ? ? ?cont = f1.read() ? ? ? ?print int(cont) ? ? ? ?print "f1 qushiba"except: ? ?print 'file expection'print f1.closed
Dieter_Lan
hehehehehehehehe 回復 Dieter_Lan
不管有沒有異常 都會先自動關閉文件 如果沒有設置try except來捕獲該異常 就會由python解釋器拋出異常了
在文件不存在的情況下,不能正常關閉文件,所以這是with ?as語句的一個問題,需要加新的try except語句來catch f.seek產生的valueError(起始值不能是-5)
舉報
讓我們一起來學習Python對于錯誤和異常的處理方式
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-09-19
我覺得不能,所以用with-as操作文件時,最好用try-except捕獲可能發生的異常,只有有了try-except文件才能保證一定被關閉,當沒有try-except捕獲異常時,一旦異常發生,異常就被提交給python解釋器了,導致程序不再向下執行,故文件未關閉
2017-09-10
自己運行一下代碼就知道了
try:
? ?with open('t1.txt', 'r') as f1:
? ? ? ?cont = f1.read()
? ? ? ?print int(cont)
? ? ? ?print "f1 qushiba"
except:
? ?print 'file expection'
print f1.closed
2016-09-19
不管有沒有異常 都會先自動關閉文件 如果沒有設置try except來捕獲該異常 就會由python解釋器拋出異常了
2016-08-13
在文件不存在的情況下,不能正常關閉文件,所以這是with ?as語句的一個問題,需要加新的try except語句來catch f.seek產生的valueError(起始值不能是-5)