我怎么能读一个巨大的json文件(0.5 gb)
22日视图(30天)
显示旧的评论
我有一个巨大的json文件。我试着使用“fileread”命令但我得到一个“内存不足”的信息。我的电脑上我有4 GB的RAM。谁能推荐一个解决方案吗?
谢谢,
梅尔
0评论
答案(2)
Guillaume
2019年4月28日
问题是,你的电脑根本没有足够的内存。什么
内存
说在你简单地开始matlab ?
*:我是mathworks解决几个问题与json解码时首先实现但剩余缺陷仍然是不可逆的损坏对象属性的名称不是有效的变量名或超过64个字符。
1月
2019年4月25日
编辑:1月
2019年4月25日
如果你使用
fileread
的0.5 GB字节转换为一个char向量,它占据了1 GB的内存,因为Matlab使用2字节/字符。你没有1 GB的空闲RAM contigous块。文件可以导入到一个细胞字符串,但这需要更多的RAM由于开销约100字节为每一行文本。但内存不需要免费的细胞在一个contigous块字符串。预先分配不是微不足道的,但是你可以用块如1000行:
函数C = readtextfile(文件名)
(fid,味精)= fopen(文件名,“r”);
如果fid = = 1
错误(味精);
结束
数控= 1000;
iC = 0;
C =细胞(nC);
而~ feof (fid)
s = fgetl (fid);
如果ischar (s)
集成电路iC + = 1;
如果iC >数控
数控=数控+ 1000;
C{数控}= [];%扩大细胞
结束
C {iC} = s;
结束
结束
文件关闭(fid);
C = C (1: iC);%作物未使用细胞字符串
结束
这将需要一段时间。结果将需要超过1 GB RAM油田,但不是在一个连续的块。所以导入工作。但只要你想处理数据,你需要更多的内存。所以唯一可靠的解决方案是安装更多的内存,或者只导入数据的特定部分。