大文件和python

大文件和python,python,Python,我有一个包含数据(时间、操作系统、ID)的大型CSV文件(300+GB)。我应该如何计算此文件中出现1次以上的ID?哪种算法不会溢出?简单循环和按行读取应该可以做到这一点 result\u set=set() 打开(文件名为“r”)作为输入文件: 对于输入_文件中的行: #预期格式为smth,smth,重要 拆分列表=行。拆分(“,”) 结果\u集.add(拆分的\u列表[-1].strip()) 打印(结果集) #如果文件是 # --- #随机的,随机的,重要的 #随机的,随机的,重要的2 #

我有一个包含数据(时间、操作系统、ID)的大型CSV文件(300+GB)。我应该如何计算此文件中出现1次以上的ID?哪种算法不会溢出?

简单循环和按行读取应该可以做到这一点

result\u set=set()
打开(文件名为“r”)作为输入文件:
对于输入_文件中的行:
#预期格式为smth,smth,重要
拆分列表=行。拆分(“,”)
结果\u集.add(拆分的\u列表[-1].strip())
打印(结果集)
#如果文件是
# ---
#随机的,随机的,重要的
#随机的,随机的,重要的2
# ---
#印刷品:
#{'important2','important1'}

与readlines()不同,这不会加载整个文件。这需要很长时间,但不会崩溃。

任何逐行迭代文件的操作。与其说是文件大小,不如说是行数和唯一ID。你有多少行?300G可能意味着数十亿条记录,那个么你们就并没有足够的内存来跟踪ID了。@bereal在最坏的情况下,他们可能会使用mmap。。。要同时映射文件和另一个存储所有ID的文件,这意味着它变得非常糟糕,您需要将内容存储在一个mmaped文件和一个简单的集合/字典中,这是不够的。。。或者只是为这个单一任务增加页面文件的大小,那个么你们就有了你们的驱动器所能容纳的内存。。。是的,速度会慢一些,但是300GB的文件处理速度在任何情况下都不是世界上最快的。应该没那么难。