我的问题是如何在编写 HDF5 文件后无限期关闭它们?
我正在尝试将数据保存到 HDF5 文件 - 大约有 200 个文件夹,每个文件夹包含今年每天的一些数据。
当我在 iPython 控制台中使用带有以下代码的 pandas 检索和保存数据HDFStore
时,该功能会在一段时间后自动停止(没有错误消息)。
import pandas as pd
data = ... # in format as pd.DataFrame
# Method 1
data.to_hdf('D:/file_001/2016-01-01.h5', 'type_1')
# Method 2
with pd.HDFStore('D:/file_001/2016-01-01.h5', 'a') as hf:
hf['type_1'] = data
当我尝试使用相同的脚本再次下载数据时,它显示:
[Errno 24] 打开的文件太多:...
有一些帖子建议在 Linux 中使用ulimit -n 1200来解决这个问题,但不幸的是我使用的是 Windows。
此外,我想我已经使用 withclosure 明确地关闭了文件,尤其是在Method 2中。为什么 iPython 仍然将这些文件视为打开的?
我的循环如下所示:
univ = pd.read_excel(univ_file, univ_tab)
for dt in pd.DatetimeIndex(start=start_date, end=end_date, freq='B'):
for t in univ:
data = download_data(t, dt)
with pd.HDFStore(data_file, 'a') as hf:
# Use pd.DataFrame([np.nan]) instead of pd.DataFrame() to save space
hf[typ] = EMPTY_DF if data.shape[0] == 0 else data