How can I read line faster?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 | fv13303118 2 918384 FR fv6665000 2 924898 AS fv2341362 2 927309 AF fv9777703 2 928836 TC fv1891910 2 932457 SG fv9697457 2 934345 GG fv35940137 2 940203 GG fv3128117 2 944564 TT fv2465126 2 947034 AG |
我有超过50 GB的文本文件。我会处理它,我只需要阅读"fvxxxxx"部分。
1 2 3 | lines = f.readlines() for x in lines: blabla() |
我认为这绝对不是最快的方法
编辑-
实际上有2000多个文件。每个文件都是20 MB。我只想读前11个字母,然后跳到下一行。我的内存限制是4 GB。
您应该将文件对象用作迭代器,以便它以内存高效的方式一次读取一行:
1 2 | for x in f: blabla() |
您可以使用上下文管理器来
1 2 3 4 | with open('file.txt') as in_file: for line in in_file: fx, *rest = line.strip().split() print(fx) |
这将给你:
1 2 3 4 5 6 7 8 9 | fv13303118 fv6665000 fv2341362 fv9777703 fv1891910 fv9697457 fv35940137 fv3128117 fv2465126 |
上述方法的好处在于,它使用文件对象作为迭代器,避免了使用
默认情况下,标准open()函数应返回缓冲文件。
类似:
1 2 3 4 | with open(<FILE>) as FileObj: for line in FileObj: x = line.strip().split()[0] print x |
编辑:满足您只打印行的第一部分的要求。