如何在 python 中永久保存列表?

Posted

技术标签:

【中文标题】如何在 python 中永久保存列表?【英文标题】:How can I save a list permanently in python? 【发布时间】:2020-03-12 08:01:16 【问题描述】:

我需要编写一个代码,让用户输入五个数字并将其从大到小排序。他们还可以选择是否要删除、添加或更改变量以及创建、保存或打开列表。不知道怎么做保存、打开和制作部分,所以我删除了,请帮助我。

l=1
print ("Please input five numbers")
a=int(input("1.:"))
print (a, "is the first number.")
print()
b=int(input("2.:"))
print (b, "is the second number.")
print()
c=int(input("3.:"))
print (c, "is the third number.")
print()
d=int(input("4.:"))
print (d, "is the fourth number.")
print()
e=int(input("5.:"))
print (e, "is the fifth number.")
print()

x=[a, b, c, d, e]
y=sorted(x,reverse=True)

print (y)

while l==1:
        print()
        print ("If you want to delete a number, press D.")
        print()
        print ("If you want to add a number, press A.")
        print()
        print ("If you want to change a number, press C.")
        print ()
        print ("If you want to exit, press Q.")
        print ()
        z=input("Answer: ")

        if z=="A":
                f=int(input("Please input another number: "))
                x.append(f)
                y=sorted(x,reverse=True)
                print (y)

        elif z=="C":
                g=int(input("Input a number you will change: "))
                if g in x:
                    x.remove(g)
                    print (g, "is removed.")
                    f=int(input("Put the number you want to replace: "))
                    x.append(f)
                    y=sorted(x,reverse=True)
                    print (y)

                elif g not in x:
                    print ()
                    print (g, "is not in the list.")
                    y=sorted(x, reverse=True)
                    print (y)

        elif z=="D":
                g=int(input("Input a number you will delete: "))
                if g in x:
                    x.remove(g)
                    print (g, "is removed.")
                    y=sorted(x,reverse=True)
                    print (y)
                elif g not in x:
                    print ()
                    print (g, "is not in the list.")
                    y=sorted(x, reverse=True)
                    print (y)
        elif z=="Q":
                import sys
                print ("Thanks!")
                sys.exit
                break
        else:   
            print ("Sorry. I could not understand. Try again.")```

【问题讨论】:

将列表保存在文件中。您可以使用json 对其进行格式化和解析。 您也可以使用 pickle (docs.python.org/3/library/pickle.html) “保存”它(正确的术语是“序列化”)。这可以用于各种 python 对象,例如字典等... 可能会有帮助(和重复...):***.com/questions/14509269/best-method-of-saving-data 或 ***.com/questions/1047318/… 【参考方案1】:

您可以将其保存到文件中,甚至可以使用搁置模块。

import shelve

s = shelve.open('test.db')
    s['key'] = [1, 2, 34, 5, 33]

这将创建一个存储数据的文件。

检索列表。

import shelve


r = shelve.open('test.db')
print (r['key'])
r.close()

这将返回原始列表。这种方法的优点是保留了数据类型。

【讨论】:

确实如此 - 手动编辑文件也更难。 尽可能使用与语言无关的文本格式——这里想到的是 json... CodeCupboard,你的代码中的 test.db 是什么?是文件名吗? 是的,这是我们创建并保存到的文件。您可以将此名称更改为更适合您的用例的名称。【参考方案2】:

您可以打开文件并将列表保存/加载为字符串

    import os
    import ast

    my_list = [1,2,3,4,5]
    save_file = 'save_file.txt.'

    # save list in file
    with open(save_file, 'w') as f:
        f.write(str(my_list))

    # load list from file
    if os.path.exists(save_file):
        with open(save_file) as f:
             my_list = ast.literal_eval(f.read())

【讨论】:

以上是关于如何在 python 中永久保存列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的打印语句保存在列表中? Python [关闭]

将更改(永久)保存在数组列表中?

如何在 Python 中保存二维数组(列表)?

如何在 python 3 中将类对象列表“保存”到我的程序中?

如何永久保存数据,以便稍后在 Android 中访问?

如何在 Python 中规范化包含列表(应保存为列表)的 json 文件熊猫?