为什么我的代码适用于小文件但不适用于大文件?

时间:2016-04-25 23:07:38

标签: python

我是编程的初学者,并尝试使用python进行数据分析。我有一些配对末端测序的fastq文件,其中每个读数(数据)都有一个补充读数,这是它进行分析所必需的。

我编写了以下代码来选择质量得分超过30的读取。它适用于小文件(我测试过1 GB)但是当我尝试在实际大小的数据上使用时,30 GB,它给我空文件作为结果。谁能告诉我这是什么问题?谢谢!

P.S。代码中提到的average()函数非常有效。我只是为了这个空间而在这里跳过它。

#enter name of the forward source file here
y=open("file1", "r")
lenght=0
for line in y:
    lenght+=1
y.close()
import re
s=0
p=4
#enter name of the forward destination file here
h=open("result1", "w")
#enter name of the reverse destination file here
k=open("result1_complementary", "w")
for turn in range(lenght/4):
    #enter name of the forward source file here
    a=open("file1", "r")
    c=a.readlines()[s:p]
    #enter name of the reverse source file here
    d=open("file1_complementary", "r")
    g=d.readlines()[s:p]
    for line in c:
        #enter the begining of the index line here
        if re.search(r"^@ABC",line):
            #enter the cutting Phred score here
            if average(c[c.index(line)+3])<30:
                del c[0:4]
                del g[0:4]
    for line in g:
        if re.search(r"^@HWI-", line):
            if average(g[g.index(line)+3])<30:
                del g[0:4]
                del c[0:4]

    for line in c:
        h.write(line) 
    for line in g:
        k.write(line)

    s+=4
    p+=4
    a.close()
    d.close()
h.close()
k.close()

1 个答案:

答案 0 :(得分:0)

感谢大家的评论!我使用了 readline()的迭代而不是 readlines()[s:p] ,并且它运行得很好。