使用 Python 2.7 读取大型 CSV 文件
应对使用 Python 2.7 读取巨大 CSV 文件的挑战可能会引起内存问题,尤其是文件超过 300,000 行。为了克服这个障碍,避免将整个文件读入内存至关重要。
内存管理技术
使用生成器可以实现内存高效的处理。不要累积列表中的所有行,而是单独生成每一行。这种方法(以 getstuff 函数的生成器为例)可显着减少内存消耗。
此外,请考虑 itertools 模块中的 dropwhile 和 takewhile 函数等优化。这些通过跳过不相关的行来促进高效过滤,进一步节省内存。
性能优化
除了内存管理之外,提高性能还包括最大限度地减少不必要的操作。 getdata 函数应该直接迭代 getstuff 生成器,消除不必要的中间列表。
示例用法
使用生成器重新编写代码会产生更有效的解决方案:
def getstuff(filename, criterion): ... # Same generator code as above def getdata(filename, criteria): ... # Same generator code as above # Process rows directly for row in getdata(somefilename, sequence_of_criteria): ... # Process the current row
此代码一次有效地处理一行,大大减少了内存使用并提高了性能,即使是巨大的CSV 文件。
以上是如何在Python 2.7中高效读取大型CSV文件?的详细内容。更多信息请关注PHP中文网其他相关文章!