[英]Python: write at the specific position in a file
我有兩個文件,一個讓我們假設鍵列表,而另一個文件有鍵和值對,如下所示。
鍵```值
現在,假設我必須在后面的文件中搜索具有鍵值對並匹配鍵的每個鍵,必須在值的 position 處為特定鍵寫入一些值。
這是我的代碼,它在運行時與模式匹配,在控制台上顯示了確切的 output,但在寫入文件時,改為在文件末尾寫入。
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()
注意: percept.txt 是帶有鍵的文件,而 answers.txt 是帶有鍵```值對的文件。
無法在文本文件的特定位置寫入
一個不錯的選擇是:
everything = letmethink.read()
everything = everything[:pos] + new_data + everything[pos + 1:]
letmethink.truncate()
letmethink.write(everything)
如果您不想這樣做,那么您必須使用數據庫和 sqlite3,您可以使用它在特定位置插入數據
有一種方法可以寫入文件中的某個 position。 但它的工作方式有點像在現有數據之間插入而不是附加。
如Python 文檔中所述:
尋找(偏移量,whence=SEEK_SET,/)
將 stream position 更改為給定的字節偏移量。 offset 相對於 wherece 指示的 position 進行解釋。 wherece 的默認值是 SEEK_SET。 其中的值是:
SEEK_SET 或 0 – stream 的開始(默認); 偏移量應為零或正
SEEK_CUR 或 1 – 當前 stream position; 偏移量可能為負
SEEK_END 或 2 – stream 的結尾; 偏移量通常為負
返回新的絕對 position。
您可以使用seek
function 來執行您的任務(當然,如果它適合您)。
我們有一個包含以下內容的example.txt
: StackOverflow
。
>>> file = open('example.txt', 'r+')
>>> file.seek(5) # bytes
5
>>> file.write('123')
3
>>> file.read()
'rflow'
現在我們的新內容是Stack123rflow
。 但是您可能會注意到read()
在新數據( 123
)之后移動了我們的 cursor 。 要將其移回,您可以使用file.seek(0)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.