我是python新手。我有一个叫做bank
的列表,可以是这样的:在Python 2.7.11中保存并加载列表为csv文件
bank = [["matt", "passw", 500, {apple:3}], ["luke", "passw123", 800, {google:2}]]
第一个参数:名称(string
)
第二参数:密码(string
)
第3个参数:现金金额(float
)
第四个参数:字典(动态,我可以改变键和值与其他功能)(我不知道如何保存它,如果你能告诉我该怎么做,我很感激它,我在代码上评论它)。
开始时,bank
是一个空白列表,并带有一个名为add_account
的函数,它为参数添加了一个新列表。我的目标是创建一个.csv文件,并在其中保存bank
,如果我关闭该程序,当我重新打开它时,我想要加载.csv文件,其中包含以前保存的所有信息bank
。 这些都是你需要知道的解决,我要告诉你的问题的功能:
import csv
def loaddata():
f = open('bank.csv','r')
reader = csv.reader(f)
for row in reader:
bank.append(row)
f.close()
def savedata(bank):
f = open('bank.csv','a')
for account in bank:
print account
#4th parameter is wrong, i don't know how to save the dicionary
st = '%s,%s,%f,%s\n' % (account[0], account[1], account[2], account[3])
f.write(st)
f.close()
bank = []
try:
bank.append(loaddata())
except IOError:
print "creating bank"
def add_account(bank):
new=create_account()
bank.append(new)
def create_account():
new_account = [0,0,0,0]
new_account[0] = raw_input('name ')
new_account[1] = raw_input('psw ')
new_account[2] = input('balance ')
new_account[3] = {}
return new_account
问题是,当我调用savedata(bank)
将其保存在一个文件,然后我调用loaddata(bank)
到恢复以前的bank
数据,bank
被保存为单个字符串,所以我不能使用例如第3个和第4个参数,因为它们被视为字符串而不是float和dictionary。另外,当我第二次尝试调用savedata(bank)
时,它不起作用(它说当作第三个参数需要float而不是字符串)。我该如何解决它?先谢谢你。
最后一件事:savedata(bank)
函数创建一个名为none
的对象,除了用“st”传递的对象之外,我不知道为什么。
这完全工作,你解释完美! – kdpkke