我有一个写json
文件的日常流程:
{
"oldfield1": 1,
"oldfield2": "a",
}
和一个读取这些文件的python脚本,每个文件都放在一个对象中
import collections
import json
import os
MyRecord = collections.namedtuple("MyRecord",["oldfield1","oldfield2"])
mydata = {}
for fname in os.listdir("mydir"):
with open(fname) as fd:
mydata[fname] = MyRecord(**json.load(fd))
Tempora mutur和更新的文件现在有一个额外的字段:
{
"oldfield1": 3,
"oldfield2": "f",
"newfield": [1,2,3],
}
现在上面的代码失败并出现此错误:
TypeError: __new__() got an unexpected keyword argument 'newfield'
我可以将newfield
添加到MyRecord,但是它会在旧文件上失败。
什么是最好的方法?
我可以将newfield
添加到MyRecord
和set MyRecord.__new__.__defaults__
。
优先级:
"futurefield"
时,理想情况下,我不想做任何事情(这意味着选项2)。就个人而言,我更喜欢第一种方法。 但是,我很想听听人们的想法。