列出当前打开的所有文件句柄?
问题描述:
你好,
是否有可能获得所有当前打开的文件句柄的列表,我相信他们是某个地方存储在环境。
我感兴趣的泰斯的功能,我想安全地处理是当一个致命的错误是上升打开任何文件,即关闭文件句柄并与原文件替换可能损坏的文件。
我有处理工作,但不知道文件句柄是否打开,我无法实现这个想法。
另外,当一个文件句柄被初始化时,这可以被另一个导入的方法继承吗?
谢谢
答
这样做将修改代码以继续当它打开一个文件的轨道的不错方式:
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任务管理器杀死进程仍然写信给文件中的数据。
重复http://stackoverflow.com/questions/2023608/check-what-files-are-open-in-python – robert 2010-07-30 10:20:08
的其中O/S?将它作为标签添加也可能有所帮助。 – Mawg 2010-07-30 10:21:39