python - 逐行读取文件还是存储在内存中?

标签 python file ram

这不是一个“我的代码坏了”的问题,而是一个“我应该这样做吗?”的问题。问题。

我有一个使用如下内容逐行迭代的脚本:reader = csv.DictReader(open('file.txt', 'rb'), delimiter= '\t') 并获取诸如年龄和日期之类的内容,而无需将整个内容提交到内存中。

就目前而言,脚本 uses about 5% of my RAM (8GB)。

一般来说,将文件放入内存而不是打开它并循环其内容是否更容易被接受——特别是当文件很大(超过 700MB)时?

我的脚本仅供个人使用,但我宁愿学习 Python 的约定并做一些被认为可以接受的事情。例如,我知道如果我在 JavaScript 中做类似的事情,我会尝试尽可能节省内存,以防止浏览器崩溃或变得无响应。

Python 中的方法(内存与循环)是否优于另一种方法?

编辑:我知道这可能有点广泛。我更好奇最好的(Pythonic)实践。

似乎有很多帖子询问如何如何做到这一点,但没有太多帖子询问为什么如果

最佳答案

AFAIK,你的方法是执行此操作的 pythonic 方法。

您应该知道 open('file.txt') 不会将整个文件放入内存。它返回一个按需读取文件的迭代器。您的 DictReader 也是如此。

只要尝试处理大文件,您就不会看到内存消耗有任何增加。

关于python - 逐行读取文件还是存储在内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24606303/

相关文章:

python - 将像素转换为黑白

python - matplotlib plt.show() 预索引空 numpy 数组时出现视觉故障

c - 读取数据并用C重写后文件大小更改

matlab - 消息目录 Matlab :interpreter was not loaded

python - 我在哪里可以找到一个高质量的 python 音乐库,它可以播放不是 pygame 的 OGG、ACC 和/或 MP3?

python - dict 模拟 switch 运算符

javascript - 如何使用 Node 读取 block 中的文件?

c++ - freopen() 的 Python 版本

matlab - 如果 RAM 使用量超过指定数量,立即停止 MATLAB。有办法吗?

database - 在 SQL Server 中查询只读数据库时,可用 RAM 的充分增加是否可以消除 tempdb 的使用?