2015-04-25 77 views
7

在我們的實驗中,我們通過python包h5py將我們的數據存儲在hdf5文件中。關閉打開的h5py數據文件

在實驗開始時,我們創建了一個hdf5文件,並在文件中的數組數組(包括其他數組)之後創建存儲數組。當某個實驗失敗或中斷時,該文件未正確關閉。 由於我們的實驗從iPython運行,對數據對象的引用保留在內存中的某處。

有沒有辦法掃描所有打開的h5py數據對象並關閉它們?

回答

10

這是它如何做(我無法弄清楚如何檢查文件的封閉的煩躁不例外,也許你會發現):

import gc 
for obj in gc.get_objects(): # Browse through ALL objects 
    if isinstance(obj, h5py.File): # Just HDF5 files 
     try: 
      obj.close() 
     except: 
      pass # Was already closed 

另一個想法:

Dpending 如何使用這些文件,如何使用上下文管理器和with這樣的關鍵字?

with h5py.File("some_path.h5") as f: 
    f["data1"] = some_data 

當程序流退出與塊,文件被關閉,無論發生什麼情況,包括異常等有關「另一個想法」的信息

+0

感謝。我只是在尋找確保我的h5py.Files結束與「與」 – zerocog