在Python中找到一个特定的行后追加它

2024-04-26 15:13:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个函数,允许用户查找特定行(文件中)的内容,并替换该行中的部分内容,然后在同一行中重新写入文件。在

def editPlayer():
    print "What information would you like to edit?"
    print "1- Forname"
    print "2- Surname"
    print "3- Email address"
    choice = int(raw_input(""))

    f = open("persons.txt","r+")
    for i in range(2): # number of type of information
        if choice == i: #check if choice equal current running of i
            line[choice-1] = str(raw_input("Enter new information: ")) #modify choice-1's element in line
            lineStr = line[0] + ";" + line[1] + ";" +  line[2] #makes list in a string

上面的代码可以工作,也就是说,如果用户要编辑播放器的电子邮件地址,他的输入将更改line中的第三个元素,lineStr将以相同的顺序包含修改后的电子邮件地址的所有信息。在

我被困在需要将lineStr重新写入我的文件的同一行的地方。文件看起来是这样的

^{pr2}$

问题发生的原因是

f.write(lineStr)

文件的第一行将被替换,因此如果我要修改Sarah的第二个名字(Stack)并将其写入文件,那么该文件将如下所示

Sarah;Stack;s.brown@anemailaddress.com
Sarah;Brown;s.brown@anemailaddress.com

而不是它应该是什么样子,即:

Joe;Bloggs;j.bloggs@anemailaddress.com
Sarah;Stack;s.brown@anemailaddress.com

谁能把我引向正确的方向吗?任何帮助都将不胜感激。谢谢你


Tags: 文件of用户incom内容informationstack
1条回答
网友
1楼 · 发布于 2024-04-26 15:13:52

您需要这样做的方法,以及大多数程序的方法-就是用正确的输出编写一个临时文件,然后替换原始文件。这是最简单的方法。在

一般逻辑如下:

  1. 打开输入文件和临时输出文件。
  2. 从输入文件中读取一行:
    1. 如果与替换条件匹配,则将新修改的行写入临时输出文件;否则,将该行按原样写入输出文件。
  3. 处理完所有行之后,关闭输入文件。
  4. 删除输入文件。
  5. 使用与输入文件相同的名称重命名临时文件。

要用Python实现它:

import os

with open('input.txt') as i, open('output.txt', 'w') as o:
    for line in i:
       if line.startswith('Replace Me:'):
           line = 'New line, replaced the old line.\n'
       o.write(line)

os.rename('output.txt', 'input.txt')

相关问题 更多 >