Python-将输入附加到.txt,但删除先前的数据

Python-将输入附加到.txt,但删除先前的数据,python,python-3.x,Python,Python 3.x,我正在尝试将输入附加到.txt文件中,并成功地完成了这一操作,但是先前存在于.txt文件中的数据会被输入的数据覆盖。我希望数据与添加的输入保持一致 以下是我目前的代码: def tilføjMedlem(): while True: tilføjFornavn = input("Skriv fornavn på det medlem du ønsker at tilføje: (Tast q for at afslutte)") if tilføjFor

我正在尝试将输入附加到.txt文件中,并成功地完成了这一操作,但是先前存在于.txt文件中的数据会被输入的数据覆盖。我希望数据与添加的输入保持一致

以下是我目前的代码:

def tilføjMedlem():
    while True: 
        tilføjFornavn = input("Skriv fornavn på det medlem du ønsker at tilføje: (Tast q for at afslutte)")
        if tilføjFornavn == 'q':
            break
        else:
            tilføjEfternavn= input("Efternavn:")
            tilføjJollypoints= input("Jollypoints:")
            tilføjInstagram = input("Instagram:")
            tilføjMedlemSiden = input('Medlem siden:')

    with open('fans.txt', 'a') as text_file:
        text_file.write(tilføjFornavn+" "+tilføjEfternavn+" "+tilføjJollypoints+" "+tilføjInstagram+" "+tilføjMedlemSiden)

tilføjMedlem()

您需要使用open()修复
函数的缩进

代码正在将值重新分配给已声明的变量。在用户输入
q
退出后,它只调用一次write to file函数,并在变量中输入最后一个值

def tilføjMedlem():
尽管如此:
tilføjFornavn=输入(“在tilføje的Skriv fornavn pådet medlem duønsker:(在afslutte的味道)”)
如果tilføjFornavn=='q':
打破
其他:
tilføjEfternavn=输入(“Efternavn:”)
tilføjJollypoints=输入(“Jollypoints:”)
tilføjInstagram=输入(“Instagram:”)
tilføjMedlemSiden=输入('medlemsiden:')
打开('fans.txt','a')作为文本文件:
text_file.write(tilføjFornavn+“”+tilføjEfternavn+“”+tilføjJollypoints+“”+tilføjInstagram+“”+tilføjMedlemSiden)
蒂尔夫øjMedlem()
代码起作用 实际上,代码将文本正确地附加到.txt文件中。但它会覆盖您在
while
循环中输入的先前输入。 如果输入getter的行为符合预期,那么代码就没有问题。它获取您最后输入的4个输入,然后将它们附加到文件中,而不覆盖文件:

但是,先前存在于my.txt文件中的数据会被输入的数据覆盖

这是错误的。你的代码可以工作。 以下是我执行的:

def tilføjMedlem():
    while True:
        tilføjFornavn = input("Skriv fornavn på det medlem du ønsker at tilføje: (Tast q for at afslutte)")
        if tilføjFornavn == 'q':
            break
        else:
            tilføjEfternavn= input("Efternavn:")
            tilføjJollypoints= input("Jollypoints:")
            tilføjInstagram = input("Instagram:")
            tilføjMedlemSiden = input('Medlem siden:')

    with open('fans.txt', 'a') as text_file:
        text_file.write(tilføjFornavn+" "+tilføjEfternavn+" "+tilføjJollypoints+" "+tilføjInstagram+" "+tilføjMedlemSiden)

tilføjMedlem()
原始文件:

这是原始数据

脚本执行:

Skriv fornavn på det medlem du ønsker at tilføje: (Tast q for at afslutte)
>>>? n
Efternavn:
>>>? First input
Jollypoints:
>>>? second input
Instagram:
>>>? third input
Medlem siden:
>>>? and this is the last one.
Skriv fornavn på det medlem du ønsker at tilføje: (Tast q for at afslutte)
>>>? q
最终文件:

这是原始数据

q第一输入第二输入第三输入和 这是最后一个

如果预期的行为是每一个输入都附加到文件中,则必须使用
块更改
的缩进:

def tilføjMedlem():
    while True:
        tilføjFornavn = input("Skriv fornavn på det medlem du ønsker at tilføje: (Tast q for at afslutte)")
        if tilføjFornavn == 'q':
            break
        else:
            tilføjEfternavn= input("Efternavn:")
            tilføjJollypoints= input("Jollypoints:")
            tilføjInstagram = input("Instagram:")
            tilføjMedlemSiden = input('Medlem siden:')

        with open('fans.txt', 'a') as text_file:
            text_file.write(tilføjFornavn+" "+tilføjEfternavn+" "+tilføjJollypoints+" "+tilføjInstagram+" "+tilføjMedlemSiden)

tilføjMedlem()

您没有覆盖文件中的内容,您使用的变量在while循环的每次迭代中都会被覆盖。因此,只有最后一组值将写入文件。缩进错误。你是说
open
语句在
while
循环中还是在
循环之外?修正这个问题。当我阅读代码时,我希望只有最后4个输入被附加到.txt文件中。确实如此。所以你的代码没有问题。使用Python3.6.0进行测试时,应该关闭并移动到SE代码审阅,因为代码可以工作。这不是解决方案。代码在不更改缩进
的情况下工作。如果
的缩进与
的缩进相同,则代码将无法按照用户的预期工作。原因:
while
循环将执行,直到用户输入
q
,一旦退出,则
open()
将只被调用一次。原始代码工作,但功能不是用户期望的,使用while循环表示需要一种快速方法来添加多条记录,直到用户决定退出te程序。@DorianTurba:代码需要一个缩进修复程序才能根据用户的要求工作。我不确定你的建议是什么。没有什么可做的,因为问题是:
以前存在于.txt文件中的数据被覆盖了。那是错误的。如果问题是以前通过输入在控制台中给出的数据,那么Trine Klitgaard Sørensen需要更改该问题,因为它误导了读者。请不要在输入前4个值后退出。尝试输入另外4个值,然后
q
我完成了。这不是一个代码问题,也许是一个行为问题。由于OP指出的问题是覆盖了以前存储在文件中的数据,因此不是问题。@TrineKlitgaardSørensen请澄清与DorianTurba的混淆,并告知我们发布的解决方案是否符合您的要求。如果问题是,如问题中所述:
先前存在于my.txt文件中的数据被输入的数据覆盖
,因此没有解决方案,因为数据没有被覆盖。如果问题是:
以前的输入被新输入覆盖
,那么解决方案是
写入
缩进。事实上,代码正如我所期望的那样完美地工作。