列出当前打开的所有文件句柄?

列出当前打开的所有文件句柄?

问题描述:

可能重复:
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

这样做将修改代码以继续当它打开一个文件的轨道的不错方式:

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任务管理器杀死进程仍然写信给文件中的数据。