你好,
是否有可能獲得所有當前打開的文件句柄的列表,我相信他們是某個地方存儲在環境。
我感興趣的泰斯的功能,我想安全地處理是當一個致命的錯誤是上升打開任何文件,即關閉文件句柄並與原文件替換可能損壞的文件。
我有處理工作,但不知道文件句柄是否打開,我無法實現這個想法。
另外,當一個文件句柄被初始化時,這可以被另一個導入的方法繼承嗎?
謝謝
你好,
是否有可能獲得所有當前打開的文件句柄的列表,我相信他們是某個地方存儲在環境。
我感興趣的泰斯的功能,我想安全地處理是當一個致命的錯誤是上升打開任何文件,即關閉文件句柄並與原文件替換可能損壞的文件。
我有處理工作,但不知道文件句柄是否打開,我無法實現這個想法。
另外,當一個文件句柄被初始化時,這可以被另一個導入的方法繼承嗎?
謝謝
這樣做將修改代碼以繼續當它打開一個文件的軌道的不錯方式:
def log_open(*args, **kwargs):
print("Opening a file...")
print(*args, **kwargs)
return open(*args, **kwargs)
然後,使用log_open
代替open
打開文件。你甚至可以做更多的事情,比如修改File
類來記錄自己。這在上面的鏈接問題中已經介紹過了。
有可能是一個噁心,骯髒的劈涉及垃圾收集或尋找在__dict__
或東西,但你不想這樣做,除非你絕對真的真的認真必須。
lsof的,/ proc /進程/ FD/
如果你使用python 2.5+可以使用with
關鍵字(雖然2.5的需求`從未來進口with_statement)
with open('filename.txt', 'r') as f:
#do stuff here
pass
#here f has been closed and disposed properly - even with raised exceptions
我不知道需要博克什麼樣的災難性故障with
聲明,但我認爲這是一個非常糟糕的。在WinXP,我快不科學的測試:
import time
with open('test.txt', 'w') as f:
f.write('testing\n')
while True:
time.sleep(1)
,然後用Windows任務管理器殺死進程仍然寫信給文件中的數據。
重複http://stackoverflow.com/questions/2023608/check-what-files-are-open-in-python – robert 2010-07-30 10:20:08
的其中O/S?將它作爲標籤添加也可能有所幫助。 – Mawg 2010-07-30 10:21:39