假如你在讀一個文件的時候,希望在無論異常發生與否的情況下都關閉文件,該怎么做呢?這
可以使用finally塊來完成。注意,在一個try塊下,你可以同時使用except從句和finally塊。如果
你要同時使用它們的話,需要把一個嵌入另外一個。
#!/usr/bin/python
#
 Filename: finally.py
import time
try:
    f 
= file('poem.txt')
    
while True: # our usual file-reading idiom
        line = f.readline()
        
if len(line) == 0:
            
break
        time.sleep(
2)
        
print line,
finally:
    f.close()
    
print 'Cleaning upclosed the file' 
輸出
$ python finally.py
Programming is fun
When the work is done
Cleaning up...closed the file
Traceback (most recent call last):
  File "finally.py", line 12, in ?
    time.sleep(2)
KeyboardInterrupt

它如何工作
我們進行通常的讀文件工作,但是我有意在每打印一行之前用time.sleep方法暫停2秒鐘。這樣
做的原因是讓程序運行得慢一些(Python由于其本質通常運行得很快)。在程序運行的時候,
按Ctrl-c中斷/取消程序。
我們可以觀察到KeyboardInterrupt異常被觸發,程序退出。但是在程序退出之前,finally從句仍
然被執行,把文件關閉