这是我的下载地址,文件名为'kosarak'
http://fimi.uantwerpen.be/data/
我的解析代码是:
parsedDat = [line.split() for line in open('kosarak.dat').readlines()]
我需要将这些数据作为一个整体来运行一些方法,所以一行一行地读取并在每一行上进行操作在这里不适合我。
文件只有30MB,我的电脑至少还有10G内存和30+G硬盘空间,所以我猜应该不会有什么资源问题
仅供引用:我的 python 版本是 2.7,我在 Spyder 中运行我的 python。我的操作系统是 Windows 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
block 终止后自动关闭对象,即使出现错误也是如此。参见 PEP 343 .
关于Python,解析 30MB 文件时遇到内存错误(已下载到我的本地计算机),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58091084/