我試圖加載到內存中的幾個2 000 FITS利用astropy.io.fits
:OSERROR 24(打開的文件太多)閱讀一堆FITS當與astropy.io
def readfits(filename):
with fits.open(filename) as ft:
# the fits contain a single HDU
data = ft[0].data
return data
data_sci = []
for i in range(2000):
data_sci.append(readfits("filename_{}.fits".format(i)))
然而,在到達1015次文件時,OSError: [Errno 24] Too many open files
被引發。
我有同樣的問題:
def readfits(filename):
ft = fits.open(filename) as ft:
data = ft[0].data
ft.close()
return data
我懷疑astropy.io.fits
不能正常關閉文件。有沒有 我可以強制文件被關閉的方式?
謝謝,這是我正在尋找的信息!我使用的解決方案有點不同,因爲我需要將數據保存在內存中,所以我不能盲目使用'del'。我簡單地用'data = ft [0] .data.copy()'替換了'data = ft [0] .data'行。 –
如果你使用'data.copy()',那麼你將整個數據加載到內存中,所以你可以用'memmap = False'打開文件,然後就沒有問題了。 此外,如果數據由表格組成,則存在一個問題,現在已修復,導致資源泄漏。 – Iguananaut
@Iguananaut,絕對購買'memmap = False'。我應該仔細閱讀「open」文檔...... –