python - JSON 添加不必要的花括号
问题描述
我正在使用 Discord.py 创建一个 Discord 机器人。我创建了一个命令,该命令将使用用户指定的值更新外部 JSON 文件。在测试命令时,我注意到某些单词,例如tes
,会在 JSON 文件的末尾添加一个不必要的大括号。这个问题只出现在某些单词上,大多数工作没有任何问题。
Python 文件
import json
with open("./file.json", "r+") as file:
f = json.load(file)
file.truncate()
f["key"] = "tes"
file.seek(0)
json.dump(f, file, indent = 4)
JSON文件
{
"key": "tes"
}
}
我试过使用f.update({"key": "tes"})
,但没有区别。
编辑:问题已通过file.truncate()
以下移动解决file.seek(0)
解决方案
当您file.truncate()
不带参数调用时,它会在当前位置(文件末尾)截断文件。然后,当您调用 时file.seek(0)
,它会移动到文件的开头并开始在旧数据之上写入新数据。如果新内容比旧内容短(例如,将“test”字符串替换为“tes”),一些旧内容将在最后留下。这里有几个解决方案:
- 将电流更改
file.truncate()
为file.truncate(0)
file.seek(0)
在写入文件之前使用,然后立即使用或file.truncate()
在您完成将数据写入文件之后使用- 使用
open(filename, 'r')
块读取文件,然后使用单独的open(filename, 'w')
块写回文件(自动替换全部内容)
推荐阅读
- aws-lambda - 无法在 DLQ 中写入消息
- ruby-on-rails - Rails 按两个关联列的总和排序
- python - 当按元素减去 2 个 Pandas 数据帧时,使用长格式比宽格式更好吗?
- java - 转换字符串以在 Java 中的 SQL WHERE IN 子句中传递多个值
- php - 在我的 Wordpress 网站上添加 Google Tag Manager 时出现问题
- angular - 注册后绕过登录并显示仪表板进行登录
- jenkins-plugins - 是否可以使用 Java 11 编写 Jenkins 插件?
- webdriver - webdriver:由于会话 ID 无效,请求失败,状态为 404:会话 ID 无效
- javascript - 反应:试图通过状态来重置自定义输入子,为什么它不更新?
- sql - 显示多个表