如何在 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 中永久保存列表?的主要内容,如果未能解决你的问题,请参考以下文章