【发布时间】:2019-06-20 19:53:19
【问题描述】:
我想在 Python 中创建存储 X 和 Y 值的 JSON 文件。它应该看起来像这样:
{"X": [[1,2,3], [2,3,5], [1,2,6], [1,2,3], [2,3,5], [1,2,6]],"Y": [3,5,1,3,5,1]}
这是我写的代码,首先我检查文件是否为空(如果是,则在 json 文件中创建 X 和 Y)。
def save_data(x, y):
data_from_json = {}
with open('data_sets.json', 'r+') as json_file:
if (os.stat('data_sets.json').st_size == 0):
if "X" not in data_from_json:
data_from_json.setdefault('X', x)
if "Y" not in data_from_json:
data_from_json.setdefault('Y', y)
json.dump(data_from_json, json_file)
with open('data_sets.json', 'r+') as json_file:
data_from_json = json.load(json_file)
data_from_json['X'].append(x)
data_from_json['Y'].append(y)
json.dump(data_from_json, json_file)
我得到的是这样的:
{"X": [[1,2,3], [2,3,5], [1,2,6]],"Y": [3,5,1]}{"X": [[1,2,3], [2,3,5], [1,2,6]],"Y": [3,5,1]}
而不是用新值附加 X 和 Y。我该怎么办?
【问题讨论】:
-
第一个
with块中的if测试似乎没有必要。data_from_json是空的,因为你刚刚创建了它,所以测试显然会成功。您的意思是先从文件中读取吗? -
当您使用
json.load()时,您正在读取您刚刚编写的相同 JSON。那有什么意义呢?