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

Tho*_*ley 6 python linux filehandle

可能重复:
检查Python中打开的文件

你好,

是否有可能获得所有当前打开的文件句柄的列表,我认为它们存储在环境中的某个位置.

我对theis函数感兴趣,因为我想安全地处理在引发致命错误时打开的任何文件,即关闭文件句柄并用原始文件替换可能已损坏的文件.

我有处理工作,但不知道什么文件句柄是打开的,我无法实现这个想法.

顺便说一句,当初始化文件句柄时,是否可以通过另一个导入的方法继承它?

谢谢

dim*_*mba 5

lsof,/ proc/pid/fd /


Kat*_*iel 2

执行此操作的好方法是修改代码以跟踪打开文件的时间:

def log_open( *args, **kwargs ):
    print( "Opening a file..." )
    print( *args, **kwargs )
    return open( *args, **kwargs )
Run Code Online (Sandbox Code Playgroud)

然后,使用log_open而不是open打开文件。您甚至可以做一些更古怪的事情,例如修改File类以记录自身。上面的链接问题对此进行了介绍。

可能有一个令人厌恶的、肮脏的黑客行为涉及垃圾收集器或查看__dict__或其他什么,但你不想这样做,除非你绝对真的真的必须这样做。