2016-03-16 7 views
1

Я пытаюсь вытащить определенную строку из каждого файла в папке. Код, который я написал, открывает каждый файл и открывает новый выходной файл, хотя в некоторых случаях он зацикливается в каждом файле и дважды выводит данные. У меня есть 15 файлов в пределах около 800 000 строк между всеми файлами.os.listdir не читает все файлы

`import os 
    for filename in os.listdir("path"): 
     fin=open("path\%s" %filename) 
     #print fin 
     fout=open("newdata.txt","w") 
     #print fout 
     l="" 
     for line in fin: 
      p=line.strip().split("\t") 
      if p[3]=="Cycle" and p[4]=="Protein": 
       l+=line 
       fout.write(l) 
     #else:pass 
    # fin.close() 
    # fout.close()` 
+0

вместо из 'w', используйте режим' w + ' –

ответ

1

вы открыть файл в режиме «W» в цикле, так что для каждого нового файла начнется выходной файл с нуля, вы должны открыть его вне цикла или использовать «ш +» режим

+0

Спасибо, я открыл новый файл за пределами цикла for, и теперь он читает все мои файлы, хотя он все еще цикличен и он читает каждый файл в каталоге 3-4 раза и дает мне выход. Мне нужно только это прочитать, я попробовал fin.close() и fout.close(), и я получаю сообщение об ошибке. – Douglasscottsdsu