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

2024-05-23 07:03:30 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
check what files are open in Python

你好

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

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

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

另外,当初始化文件句柄时,是否可以由另一个导入的方法继承?

谢谢你


Tags: 文件方法函数in列表环境check错误
3条回答

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

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

然后,使用log_open而不是open来打开文件。你甚至可以做一些更复杂的事情,比如修改File类来记录自己。这在上面的相关问题中有所涉及。

可能有一个恶心的,肮脏的黑客,涉及到垃圾回收器或查看__dict__之类的东西,但你不想这样做,除非你绝对认真地必须这样做。

如果您使用的是python 2.5+,则可以使用with关键字(尽管2.5需要'fromfutureimport with_语句)

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任务管理器终止进程,仍然将数据写入文件。

lsof,/proc/pid/fd/

相关问题 更多 >

    热门问题