这不是一个“我的代码坏了”的问题,而是一个“我应该这样做吗?”的问题。问题。
我有一个使用如下内容逐行迭代的脚本: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/