【问题标题】:Python: write at the specific position in a filePython:写入文件中的特定位置
【发布时间】:2016-09-04 10:59:01
【问题描述】:

我有两个文件,其中一个具有假设键列表,而另一个文件具有如下所示的键和值对。

键```值

现在,假设我必须在后面的文件中搜索具有键值对的每个键,并且在匹配键时,必须在值的位置为特定键写入一些值。

这是我的代码,它在运行时与模式匹配,在控制台上显示确切的输出,但在写入文件时写入文件末尾。

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 是带有键```值对的文件。

【问题讨论】:

  • 首先在 list/dict/whatever 中完整阅读答案。然后写到最后,随心所欲。
  • 这就像文件会增长,并且是一个动态文件,会随着每个新输入而不断更新,所以存储在 list/dict 中然后写回文件的想法似乎不可行在这种情况下。由于文件的大小必须随着每个新的键值对而增加并不断增加。

标签: python file-handling


【解决方案1】:

不可能在文本文件的特定位置写入

一个不错的选择是:

  • 读取文件everything = letmethink.read()
  • 插入新数据everything = everything[:pos] + new_data + everything[pos + 1:]
  • 删除文件letmethink.truncate()
  • 完全替换文件letmethink.write(everything)

如果您不想这样做,那么您必须使用数据库和 sqlite3,您可以使用它在特定位置插入数据

【讨论】:

    猜你喜欢
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2015-12-14
    • 2020-04-07
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多