我需要在一个文本文件中存储一个相对较大的可变实例变量列表。这是我当前阅读和写作方法的细分:
class Car():
def __init__(self, name, size, color):
self.name = name
self.size = size
self.color = color
aa = Car('truck','big','red')
bb = Car('sedan','small','blue')
cc = Car('bus','big','yellow')
with open('test.csv', 'ab') as ff:
ww = csv.writer(ff)
for i in [aa, bb, cc]:
ww.writerow([i.name, i.size, i.color])
carList = []
with open('test.csv', 'rb') as ff:
rr = csv.reader(ff)
for i in rr:
carList.append(Car(i[0], i[1], i[2]) )
print carList[1].color
这有几个问题。列的数量和顺序被有效地硬编码。我不确定这是否可以轻松避免,但我觉得应该可以。我相信,修改文件中间的一个实例需要遍历所有行并重写它们,同时检查'name'(与其他变量不同的是唯一的),以便以不同的方式写入。此外,在实例化之前,我不能直接按名称访问值,这也没什么大不了的,但我觉得我应该避免它。
该系统运行良好,但似乎可以大大改进。