我有一個python腳本,它創建了很多臨時文件。如果腳本由於ctrl + c中斷而提前終止,我想在程序結束之前快速刪除這些文件。Python ctrl + c,如果提前終止,執行函數
處理這個問題的pythonic方法是什麼?
我有一個python腳本,它創建了很多臨時文件。如果腳本由於ctrl + c中斷而提前終止,我想在程序結束之前快速刪除這些文件。Python ctrl + c,如果提前終止,執行函數
處理這個問題的pythonic方法是什麼?
如果可能,請打開with
語句中的文件,或者使用try
語句與finally
塊關閉文件。如果您使用tempfile
,關閉時文件將自動銷燬;否則,您可能需要在finally
區塊中自行刪除它們。
http://docs.python.org/2/library/exceptions.html#exceptions.KeyboardInterrupt
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
cleanUp()
使用'嘗試:最後:'語法是非常有用的,因爲如果你的程序退出出於不同的原因不是'KeyboardInterrupt'(比方說,一個例外),你仍然可以得到您的臨時。文件已刪除。 –
@JosephDunn:+1。使用'with'或'try:finally:'或'tempfile'代替'try:除了:'_also_意味着你可以取消大部分可能已經寫入成功案例的手動清理,使得代碼更簡單。 – abarnert
順便說一句,'tempfile'使得Unix下的所有東西都變得非常簡單,只要你選擇正確的類......但在Windows中,很多情況仍然是一種痛苦。 (但是,與通過手動方式執行操作相比,通常還是要少一些痛苦。) – abarnert