Python,解析 30MB 文件(已下载到我的本地计算机)时遇到内存错误



这是我的下载地址,文件名是'kosarak'

http://fimi.uantwerpen.be/data/

我的解析代码是:

parsedDat = [line.split() for line in open('kosarak.dat').readlines()]

我需要这些数据作为一个整体来运行一些方法,所以一行一行地阅读并在每一行上进行操作不适合我在这里。

文件只有30 MB,我的电脑至少剩下10G内存和30+G硬盘位置,所以我想应该没有任何资源问题

仅供参考:我的python版本是2.7,我在Spyder中运行我的python。我的操作系统是视窗 10。

PS:你不需要使用我的解析代码/方法来完成这项工作,只要你能将数据从文件获取到我的python环境,这将是完美的。

也许这可能会有所帮助。

with open('kosarak.dat', 'r') as f:  # Or 'rb' for binary data.
parsed_data = [line.split() for line in f]

不同之处在于,您的方法一次读取文件中的所有行,然后处理每一行(实际上需要 2 倍内存,一次用于文件数据,一次用于解析的数据,所有这些必须同时存储在内存中(,而这种方法只是逐行读取文件,只需要内存即可生成parsed_data

此外,您的方法没有显式关闭文件(尽管您可能只是没有显示代码的那部分(。 此方法使用上下文管理器(with expression [as variable]:(,一旦with块终止,即使在错误之后,它也会自动关闭对象。 见PEP 343。

最新更新