如何更新CSV文件中的特定位置?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新CSV文件中的特定位置?相关的知识,希望对你有一定的参考价值。
我目前正在做一个任务,我们得到了一个库系统的骨架代码,用户可以从一个菜单中输入各种命令,允许他们查询或签出项目。用户能够从一个菜单中输入各种命令,允许他们查询或签出项目。
这些项目存储在两个CSV文件中(library_collections["电影"],library_collections["书籍"]),并且已经被骨架代码加载。
当用户在菜单上输入命令后,他们会被提示输入一个项目ID,这个ID应该与CSV文件中的ID相匹配。
下面是我的Check in的代码。
def cib(id , library_collections):
for i in library_collections["books"]:
if id == i["ID"]:
i["Available"]=i["Available"]+1
return 'Item has successfully Been Checked In'
elif id != i['ID']:
return 'Please restart the program and enter a valid ID'
签入功能的输出output: None
这是我的结账代码。
def cob(id, library_collections):
for i in library_collections["books"]:
if id == i["ID"]:
if i["Available"] > 0:
i["Available"] = i["Available"] - 1
return('Item Successfully Checked-out')
elif i["Available"] == 0:
print('There are no more available copies')
elif id != i["ID"]:
return'Please restart the program and enter a valid ID'
结账的输出 output: 'Please restart the program and enter a valid ID'
每当我输入一个我知道在CSV文件中的ID时,这两个函数给我的输出和上面写的一样。因此,这两个函数对CSV文件没有影响。
答案
如果你的引导不是第一个在列表中,你落到elif和返回错误信息。
这可能有用。
def cib(id , library_collections):
for i in library_collections["books"]:
if id == i["ID"]:
i["Available"]=i["Available"]+1
return 'Item has successfully Been Checked In'
return 'Please restart the program and enter a valid ID'
所以你先循环浏览所有的书 如果没有找到书,你就会返回错误信息。
在cob方法中也是如此
循环浏览dict的列表不是有效的方法。如果我正在编写这样的东西,并且由于某些原因我不能使用适当的数据库,我会将CSV解析为dict。Datamodel可能是这样的。
{ 1: {"available": 10, "name": "Hamlet", "author": "W. Shakespeare", "year": 1609},
123: {"available": 0, "name": "Война и мир", "author": "L. Tolstoi", "year": 1869},
}
其中1和123是id 你也可以用用户字符串作为id。然后,你可以简单地做你的方法,比如
def cib(id, library_collection):
try:
library_collection[id]["available"] += 1
return 'Item has successfully Been Checked In'
except:
return 'Please restart the program and enter a valid ID'
或
def cib(id, library_collection):
if id in library_collection:
library_collection[id]["available"] += 1
return 'Item has successfully Been Checked In'
else:
return 'Please restart the program and enter a valid ID'
避免for-loops总是好主意。
以上是关于如何更新CSV文件中的特定位置?的主要内容,如果未能解决你的问题,请参考以下文章