列出所有当前打开的文件句柄?[重复]


问题内容

这个问题已经在这里有了答案

10年前关闭。

可能重复:
检查在Python中打开了哪些文件

你好,

是否可以获取所有当前打开的文件句柄的列表,我假设它们存储在环境中的某个位置。

我对theis函数感兴趣,因为我想安全地处理出现致命错误时打开的所有文件,即关闭文件句柄并用原始文件替换可能损坏的文件。

我可以进行处理,但是不知道打开了哪些文件句柄,因此无法实现这个想法。

顺便说一句,初始化文件句柄时,可以通过其他导入的方法继承吗?

谢谢


问题答案:

这样做的 方法是修改代码以跟踪打开文件的时间:

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

然后,使用log_open代替open打开文件。您甚至可以做一些更棘手的事情,例如修改File类以记录自身。上面的链接问题中已涉及到这一点。

可能涉及垃圾收集器或查找之类的东西 令人作呕,肮脏__dict__,但是除非您 确实非常认真地 必须 这样做,否则您不希望这样做。