2016-09-04 38 views
1

我有兩個文件一個讓我們假設鍵列表,而其他文件有像下面這樣寫的鍵和值對。Python:寫在一個文件中的特定位置

keys```values

現在,假設我必須搜索在以後文件中的每個鍵具有鍵值對和匹配的鑰匙,必須寫在特定鍵一些值價值的位置。

這是我的代碼,它在運行時匹配模式,顯示控制檯上的確切輸出,但是在文件寫入時寫入文件末尾。

import re 
with open('perceive.txt','r') as jawabdo: 
    for harsawal in jawabdo: 

     with open('answers.txt','ab+') as letmethink: 
      for spquestion in letmethink: 
       sawal,jawab = spquestion.split("```") 
       matching = re.match(sawal.lstrip('\r'),harsawal) 
       if matching: 
        size = len(jawab) 
        if(size == 1): 
         jawab = "coming soon" 
         letmethink.write(jawab) 
         print('Answers written successfully!!!') 
     letmethink.close() 
jawabdo.close() 

注: perceive.txt是與密鑰的文件,同時answers.txt是具有key```value對的文件。

+0

讀答案/不管。然後把它寫到最後,就像你喜歡的那樣。 –

+0

它就像文件將會增長一樣,並且是一個動態的文件,它會隨着每個新輸入而不斷更新,所以在這種情況下,存儲在列表/字典中然後寫回文件的想法似乎不可行。隨着每個新的關鍵值對文件的大小必須增加並且持續增加。 –

回答

1

有一個在特定的地方寫在文本文件中沒有可能的方式

一個很好的選擇是:

  • 讀取文件everything = letmethink.read()
  • 插入新的數據everything = everything[:pos] + new_data + everything[pos + 1:]
  • 刪除文件letmethink.truncate()
  • 完全替換文件letmethink.write(everything)

如果你不想這樣做,那麼你必須使用一個數據庫和sqlite3的,使用它可以在特定的位置完全首先在列表/字典中插入數據

相關問題