2011-03-27 73 views
1

我的腳本創建文件來存儲其運行時間期間的數據,我想刪除這些文件終止我的程序。這可能嗎?程序終止觸發代碼

我不想要一個解決方案的建議...就像'不要創建文件'。

非常感謝!

回答

7

Python的os模塊怎麼樣?有一個「刪除()」方法來做你想做的。

documentation

處理您程序的退出,你可以使用atexit模塊。

實施例:

import os 

def delete_file(name): 
    os.remove(name) 

import atexit 
atexit.register(delete_file, file_path) 

FILE_PATH是刪除該文件。

+0

你應該趕上os.remove可以提高異常(例如,如果在Windows上刪除正在使用的文件。)的 – Oddthinking 2011-03-27 13:00:46

+0

是當然,這只是一個示例代碼;-) – 2011-03-27 13:03:08

6

你想要atexit()處理程序。

以我的經驗,可能是由於在解釋(?)的錯誤,我發現這非常具有挑戰性的使用,因爲有時我需要利用這些資源已經被清理了,包括我需要使用的模塊。

+0

哎呦,你打我吧:) – mithrandi 2011-03-27 10:55:56

+0

感謝迅速的反應 – Rhys 2011-03-27 10:57:17

1

Python提供對tempfiles的支持(請參閱同名模塊)。當程序終止時,這些可能不能保證被刪除,但操作系統知道,只要需要(例如,在某些Unix上,每天晚上),它們可以在沒有通知的情況下被刪除。

1

這是一個更簡單的方法,似乎正常工作。我沒有在真實代碼中使用它,所以可能存在我不知道的缺點。來自更有經驗的Pythonistas的批評值得歡迎。

import sys 

def main(): 
    print('main') 
    sys.exit(0) 

try: 
    main() 
finally: 
    print('cleanup code goes here') 
+0

或者你只是把try/finally放在'main()'裏面。如果文件是由主應用程序控制的,但是如果它們是庫的一部分,那麼這將起作用,那麼就需要使用'atexit'處理程序。 – ncoghlan 2011-03-27 12:00:05