【问题标题】:overwrite words in text file with python用python覆盖文本文件中的单词
【发布时间】:2014-11-22 10:43:33
【问题描述】:

我创建了一个文本文件,其中第一行包含创建用户的计数器,其余行文本包含用户名、密码.. 例如:

2
username Name Last_name Password
username1 Name Last_name1 Password1

我正在使用以下命令:

def SaveDatA(self):
    #if self.CheckValid() == False:
        #return
    with open("data.txt","a") as f:
        f.write(self.userEntry.get() + " " + self.NameEntry.get() + " " + self.LastEntry.get()+ " " + self.PasswordEntry.get() + "\n")
        self.counter += 1

我想把计数器更新到第一行

【问题讨论】:

  • 我建议你简单地删除总数的第一行,因为它是多余的。
  • 您可能应该创建一个包含所需内容的临时文件,然后将 os.rename() 改为原始文件名。这是原子的,即使在 NFS 上也是如此。

标签: python replace overwrite


【解决方案1】:

你想要这个吗?

f1_lines = open('data.txt', 'r').readlines()

with open('data.txt','w') as f:
         f.write(self.userEntry.get() + " " + self.NameEntry.get() + " " + self.LastEntry.get()+ " " + self.PasswordEntry.get() + "\n")
         self.counter += 1
         f1_lines[0]=str(self.counter)+'\n'
         f.write(''.join(f1_lines))

使用readlines(),您可以创建一个包含文件中所有行的列表,因此您可以使用f1_lines[0]=str(self.counter)+'\n' 更改该列表的第一个索引,然后将其重写到文件中!

【讨论】:

  • 我试过了 - 没用。我只想编辑 self.counter 变量的第一行
  • 我是编程世界的新手(包括 python)。如果你能解释这些变化,我将不胜感激。
  • 我编辑答案!试试吧 !我将在答案中添加一个解释!
  • 没有用,但你帮助了我,现在它可以用了,但也许有更好的方法..我会把它放在下一个答案中以显示我做了什么..
  • @Gabriel 如果可行,您可以通过投票告诉社区并接受答案!
【解决方案2】:

经过大量试验,这段代码可以工作:

with open("data.txt","a") as f:
    f.write(self.userEntry.get() + " " + self.NameEntry.get() + " " + self.LastEntry.get()+ " " + self.PasswordEntry.get() + "\n")
    self.counter += 1

fileCopy = open('data.txt', 'r').readlines()
fileCopy[0] = fileCopy[0][1:]

with open("data.txt","w") as f:
    f.write(str(self.counter)+" ")
    f.write("".join(fileCopy))

但也许还有其他更好的方法?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 2014-10-22
    • 2016-05-25
    • 2018-04-25
    • 2015-01-20
    • 2013-07-10
    • 2014-11-04
    相关资源
    最近更新 更多