2016-08-25 5 views
0

Мне нужно написать подстроки в новый файл, прочитав их из другого файла. Проблема, с которой я сталкиваюсь, заключается в том, что она только записывает последнюю найденную подстроку. Вот что я пробовал.Чтение и запись данных в новый файл Python

def get_fasta(site): 

with open('file1.txt', 'r') as myfile: 
     data=myfile.read() 
     site = site-1 
     str1 = data[site:site+1+20] 
     temp = data[site-20:site] 
     final_sequence = temp+str1 
     with open('positive_results_sequences.txt', 'w') as my_new_file: 
      my_new_file.write(final_sequence + '\n') 
def main(): 
    # iterate over the list of IDS 
    for k,v in zip(site_id_list): 
     get_fasta(v) 

if __name__ == '__main__': 
    main() 

ответ

2

Это потому, что вы открыли внутренний файл в w режиме, который воссоздает файл каждый раз. Таким образом, конечный результат заключается в том, что сохраняется только последняя запись. Вы хотите использовать режим a (что означает «добавить»).

Также есть некоторые другие проблемы с вашим кодом. Например, вы открываете и закрываете оба файла в каждой итерации цикла. Вы должны переместить код открытия файла снаружи и передать их в качестве параметров:

def main(): 
    with open('file1.txt', 'r') as myfile: 
     with open('positive_results_sequences.txt', 'a') as my_new_file: 
      for k,v in zip(site_id_list): 
       get_fasta(v, myfile, my_new_file) 
+0

Отмечено. Спасибо. – Ghauri

Смежные вопросы