0

我正在尝试从我的非常大的文件(〜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%..

我将不胜感激任何帮助!

4

1 回答 1

0

不要set使用底层迭代器——这是非常昂贵的过程。您应该能够writelines直接将此迭代器提供给:

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

其他小尼特:

你不需要写

import sys, os

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

于 2017-09-22T08:34:34.487 回答