Python 如何将字段中的条目存储到文本文件?

Python 如何将字段中的条目存储到文本文件?,python,user-interface,tkinter,Python,User Interface,Tkinter,我正在尝试将字段中的文本条目存储到文本文件中。 使用字段注册和登录,而不是输入 fields = "First Name", "Last Name", "Email Address", "Username", "Password" def fetch(entries): for entry in entries: field = entry[0] text = entry[1].get() prin

我正在尝试将字段中的文本条目存储到文本文件中。 使用字段注册和登录,而不是输入

fields = "First Name", "Last Name", "Email Address", "Username", 
    "Password"


    def fetch(entries):
       for entry in entries:
          field = entry[0]
          text  = entry[1].get()
          print('%s: "%s"' % (field, text)) #i do not need this
          fwu = open('UserData.txt','w')     
          fwu.write(('%s: "%s"' % (field, text))) #here is the 
                                                  #problem    
          fwu.close()
印刷品做了正确的事情:

First Name: "1"
Last Name: "2"
Email Address: "3"
Username: "x"
Password: "y"
但在文本文件中只保存最后一个字段


我需要创建一个租用工具考试计划,注册,登录,帐户。。。我还有其他问题,但我希望能解决这些问题。

您看到的问题是,您没有在字符串末尾提供新行,这可能与您如何打开和写入每个条目的文本文件有关

相反,您应该打开文件一次,然后在每个字符串的末尾用新行写入所有内容

我更喜欢使用with open而不是open and close,因为with open语句将在下面的所有内容完成后自动关闭

请尝试以下方法:

fields = "First Name", "Last Name", "Email Address", "Username", "Password"

    def fetch(entries):
        with open('UserData.txt', 'w') as fwu:
            for entry in entries:
                field = entry[0]
                text  = entry[1].get()
                print('{}: "{}"\n'.format(field, text))
                fwu.write('{}: "{}"\n'.format(field, text))

它只插入最后一个,因为它会在文件中覆盖它。您需要使用换行符来获取要插入文本文件的条目中的所有内容


以w模式打开文件会覆盖整个文件。您不应在循环中打开文件,而应在启动循环之前先在中打开,并在循环结束时将其关闭。或者您可以附加到文件而不是写入。对于您的情况,您应在附加模式下打开文件,否则您将得到与OP相同的错误。或者您应该在for循环之外打开该文件。我已在代码中更改了该部分,这是一个好主意,但我仍然需要添加/删除某些内容。我在保存的文件中得到了这个结果:名字aLast Name bEmail地址cUsername 1Password 2fwu.writefield+:+text+\n这解决了问题:名字:a姓氏:b电子邮件地址:c用户名:1密码:2
def fetch(entries):
    for entry in entries:
        field = entry[0]
        text = entry[1].get()
        print('%s: "%s"' % (field, text))  # i do not need this
        fwu = open('UserData.txt', 'a')

        fwu.write(field+"\n"+text)  # 

        fwu.close()