2010-07-30 67 views
6

可能重複:
check what files are open in Python列出當前打開的所有文件句柄?

你好,

是否有可能獲得所有當前打開的文件句柄的列表,我相信他們是某個地方存儲在環境。

我感興趣的泰斯的功能,我想安全地處理是當一個致命的錯誤是上升打開任何文件,即關閉文件句柄並與原文件替換可能損壞的文件。

我有處理工作,但不知道文件句柄是否打開,我無法實現這個想法。

另外,當一個文件句柄被初始化時,這可以被另一個導入的方法繼承嗎?

謝謝

+3

重複http://stackoverflow.com/questions/2023608/check-what-files-are-open-in-python – robert 2010-07-30 10:20:08

+0

的其中O/S?將它作爲標籤添加也可能有所幫助。 – Mawg 2010-07-30 10:21:39

回答

3

這樣做將修改代碼以繼續當它打開一個文件的軌道的不錯方式:

def log_open(*args, **kwargs): 
    print("Opening a file...") 
    print(*args, **kwargs) 
    return open(*args, **kwargs) 

然後,使用log_open代替open打開文件。你甚至可以做更多的事情,比如修改File類來記錄自己。這在上面的鏈接問題中已經介紹過了。

有可能是一個噁心,骯髒的劈涉及垃圾收集或尋找在__dict__或東西,但你不想這樣做,除非你絕對真的真的認真必須

5

lsof的,/ proc /進程/ FD/

0

如果你使用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任務管理器殺死進程仍然寫信給文件中的數據。

相關問題