簡體   English   中英

Python:寫入文件中的特定 position

[英]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.txtStackOverflow

>>> 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM