itertools大文件系统错误

时间:2017-09-22 08:15:18

标签: python line iteritems

我正在尝试从我的大文件(~300GB)中获取偶数行,并且我能够为一个与我得到错误的大小几乎相同的文件执行此操作。代码是:

import itertools
import sys, os

with open('FILE.fasta') as f:
    fd = open("FILE.txt","w")
    fd.writelines(set(itertools.islice(f, 0, None, 2)))
    fd.close()

错误是:

   Traceback (most recent call last):
   File "new3.py", line 7, in <module>
   fd.writelines(set(itertools.islice(f, 0, None, 2)))
   SystemError: Negative size passed to PyString_FromStringAndSize

你确实认为这是因为文件太大了吗?我已经检查了代码工作时的内存使用情况,并且它从未超过50%..

我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:0)

不要从底层迭代器中创建set - 这是非常昂贵的过程。您应该能够直接将此迭代器提供给writelines

fd.writelines(itertools.islice(f, 0, None, 2))

其他小尼特:

您无需撰写

import sys, os

因为您已经在上面的行中导入了sys。删除上面的行或写下import os