网站域名解释怎么做,石家庄官网设计及搭建,电子商务网站的建设与规划,免费网站建立项目场景#xff1a;
提示#xff1a;扩充数据集时#xff0c;同步修改json标签中的imagePath字段的值#xff0c;出现json文件读写不一致问题。
采用open函数读写模式修改json文件字段。open(jsonF.json, r)。 问题描述
运行修改json文件报错#xff1a;j…项目场景
提示扩充数据集时同步修改json标签中的imagePath字段的值出现json文件读写不一致问题。
采用open函数读写模式修改json文件字段。open(jsonF.json, r)。 问题描述
运行修改json文件报错json.decoder.JSONDecodeError: Extra data: line 1 column 332 (char 331) 源代码 with open((os.path.join(dir_path, 142 file_name)), r) as jsonFile:data json.load(jsonFile)data[imagePath] 142 imagePathjson.dump(data, jsonFile, ensure_asciiFalse) 原因分析 需要了解open函数读写文件模式和文件之指针 json库load加载json文件后data json.load(jsonFile)又访问了 data[“imagePath”] 。此时文件指针指向了data[“imagePath”]的下一行。这时直接转存数据json.dump(data, jsonFile),文件指针位置不对。所以会报错。当你loads json文件时出现json.decoder.JSONDecodeError也可能是因为存储时值没有加双引号可能是因为值里面有特殊字符比如等。 解决方案 移动文件指针到开始位置jsonFile.seek(0) 转存数据传入参数ensure_asciiFalse之后调用截断函数jsonFile.truncate()防止写入其他东西。 with open((os.path.join(dir_path, 142 file_name)), r) as jsonFile:data json.load(jsonFile)data[imagePath] f142{imagePath}jsonFile.seek(0) # rewind json.dump(data, jsonFileensure_asciiFalse)jsonFile.truncate()