Python 覆盖txt文件中的特定行

Python 覆盖txt文件中的特定行,python,python-3.x,txt,Python,Python 3.x,Txt,我还是python新手,我尝试过用这种方式覆盖txt文件上的一行 " 回答=输入/秒/升/米: if answer == "R": print ("Racer") f=open('character.txt', 'w+') with open("character.txt") as file_in: lines = [1] for line in file_in:

我还是python新手,我尝试过用这种方式覆盖txt文件上的一行

"

回答=输入/秒/升/米:

if answer == "R":
    print ("Racer")
    f=open('character.txt', 'w+')
    with open("character.txt") as file_in:
        lines = [1]
        for line in file_in:
            lines.append(line)
    amount=int(input("please enter the amount"))            
    f.write(answer )
    f.write("" + "-" + str(amount) + '\n\n')
    f.write("" + '\n')
    f.close()
elif answer == "S":
    print ("Sage")      
    f=open('character.txt', 'w+')
    with open("character.txt") as file_in:
        lines = [3]
        for line in file_in:
            lines.append(line)
    amount=int(input("please enter the amount"))            
    f.write(answer )
    f.write("" + "-" + str(amount) + '\n\n')
    f.write("" + '\n')
    f.close()
"

它将替换txt文件中的所有文本行 我想做的是,当我选择R时,它写入txt文件的第1行,当我选择S时,它写入txt文件的第3行

我已经试过了

"

"

有人能给我指一下正确的方向吗你可以这样做:

with open('myfile.txt','r+') as myfile:
    data = myfile.read()
    myfile.seek(0)
    myfile.write('newData')
    myfile.truncate()

truncate方法覆盖.txt文件

您的第一种方法已经接近解决方案,但是您没有选择第1行或第3行,您只是创建了一个包含1行=[1]的列表。您首先需要打开该文件。然后,您可以使用file.readlines返回一个列表,其中包含每一行作为一个单独的字符串,而不是file.read,它将整个文件作为一个字符串返回。然后,为一个特定行指定一个新值,再次打开同一个文件,但现在处于写入模式,使用file.writelines将行列表写回该文件,就这样

如果答案==R: 印花车 使用opencharacter.txt,r as f:with会自动关闭文件-无需自行关闭 行=f.readlines amount=Input请输入金额,如果将金额转换回下面的字符串,则无需先将金额转换为int 第[0]行=答案+-+金额 对于opencharacter.txt,w作为f: f、 写线 我会让你自己修改其他答案的代码。请注意,如果您将上述内容放在一个函数中,该函数接受一个数字(您要覆盖的行)和一个字符串(答案),则可以保存多行代码

你肯定想知道我为什么要把[0]=。。。在代码中。好吧,我们从1开始计数,但是Python从0开始计数!你所说的第1行,是Python的第0行,你所说的第2行,是Python的第1行。等等


这里是第二种方法的一些注意事项:在您传递给它的数字指定的文件中,而不是行中。并调整文件大小。它会处理文件。

您到底想实现什么?每次放置新值时,程序都会覆盖.txt文件中的行。您是否试图找到一种不覆盖该文件的方法?您好-请提供您正在查找的文件输出的示例,以及代码当前正在执行的操作的示例。@tamerjar当我选择S或R以及输入所选金额时,我正在尝试这样做,它将覆盖当前行,并保留未编辑的其他行。例如,在txt文档中,S位于第3行,因此当我在程序中选择S并输入金额时,它将用新的amount@Cerberton目前我正在尝试获取它,因此当我选择s作为选项并选择我要添加的金额时,例如s,10,我希望它覆盖txt文件的第3行,但是发生了什么,当我在此程序中选择S或其他选项时,它会覆盖txt文件中的所有数据。我尝试过这样做,但当我选择S或R时,它会覆盖同一行。我尝试过将seek0更改为seek 3,我也尝试过相同的截断和读取,但仍然有问题。我将尝试找到另一种方法!truncate方法会覆盖一个.txt文件-抱歉,但这完全是胡说八道。谢谢,我现在知道我哪里出错了。这帮了我很大的忙,谢谢你写下解释。它确实帮助我更好地理解了它
with open('myfile.txt','r+') as myfile:
    data = myfile.read()
    myfile.seek(0)
    myfile.write('newData')
    myfile.truncate()