2016-08-25 75 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