如何附加列表以使更改持久?

时间:2016-04-04 09:24:39

标签: python list

我是Python的新手,对于编码一般来说相对较新,我只是想编写一段代码来查看是否可以附加一个列表,然后当重新加载.py时,更改会保存到其中?

我不确定这是否可能与没有相当数量的工作的列表,但我没有尝试让我到那里。

我目前的测试代码是:

lDUn = []
lDPw = []

def enterUn():
    usrName = input(str("Enter your desired username:\n"))
    if usrName in lDUn:
        print ("Username is already in use, please try again")
        enterUn()
    else:
        print ("Username created!")
        lDUn.append(usrName)

enterUn()

def enterPw():
    pW1 = input(str("Enter your desired password:\n"))
    pW2 = input(str("please re-enter your password:\n"))
    if pW1 == pW2:
        print ("Password created!")
        lDPw.append(pW1)       
    else:
        print ("Passwords do not match, please try again")
        enterPw()

enterPw()

lDUnlDPw稍后检查包含时,它们注册没有问题,但是当程序关闭并稍后重新打开时它们就会消失。 我试过写它' pW'和' usrName'输入到.txt但未能让它在稍后搜索特定字符串的.txts。 (但这是针对不同的问题)除此之外,我不确定如何处理我目前对Python的了解。

2 个答案:

答案 0 :(得分:0)

重新启动程序时,变量值(在本例中为列表内容)从不自动保存。您需要编写一些代码,在程序退出之前将值保存到文件中,还有一些代码在程序重新启动时从文件中读取值。

由您决定如何将列表转换为可放入文件的字节。一种常见的方法是将列表中的字符串写入文件,每行一个,然后再次读取它们。您可以使用methods of file objects

执行此操作

另一种选择是使用pickle module。这可能会为您省去一些努力,因为您只需为它提供一个Python对象并为您处理转换为字节,但您将无法查看和编辑生成的文件。 (嗯,你可以,但它看起来像乱码,因为它是一个二进制文件。)

答案 1 :(得分:0)

这基本上就是你做的事情:

  1. 您可以设置一个或多个文件来存储这些列表。
  2. 在代码开头,您将文件中的数据加载到列表中。
  3. 每次修改其中一个列表时,您还会修改相关文件(最基本的实现是重新创建文件)。
  4. 在其他情况下使用内存数据。
  5. 只要您处理小文件和小“流量”,这样就可以正常工作。如果其中任何一个增加,那么您将有严重的性能和/或一致性问题。要正确解决这些问题,您应该使用正确的数据库,从sqlite开始(不需要单独的服务器)。