如何获取JSON文件长度?聊天机器人语录JSON条目数查询咨询
用JSON文件存储聊天机器人语录的实用方案
嘿,我来帮你搞定这个小项目里的JSON存储问题~ 不用数据库完全没问题,咱们一步步来解决添加语录和统计条数的需求:
一、给JSON文件新增语录的正确姿势
直接往JSON文件末尾插内容肯定会搞坏格式,所以得走「读→改→写」的流程,我用Python给你写个实际能用的例子(毕竟做聊天机器人Python是主流):
具体步骤:
- 先检查JSON文件是否存在,第一次运行的话就初始化一个空字典
- 读取现有内容解析成Python字典
- 自动生成新的键名(比如现有
quote4,新的就是quote5) - 把新语录加进去,再写回文件(加个缩进让文件好看点)
代码示例:
import json import os def add_new_quote(new_quote_content): quote_file_path = "quotes.json" # 初始化或读取现有语录 if not os.path.exists(quote_file_path): quotes_dict = {} else: with open(quote_file_path, 'r', encoding='utf-8') as f: quotes_dict = json.load(f) # 生成下一个quote的键名 next_quote_id = len(quotes_dict) + 1 new_key = f"quote{next_quote_id}" # 添加新语录 quotes_dict[new_key] = new_quote_content # 写回文件,缩进4格方便查看 with open(quote_file_path, 'w', encoding='utf-8') as f: json.dump(quotes_dict, f, indent=4) # 测试一下,加一条新语录 add_new_quote("Talk is cheap. Show me the code.")
二、获取JSON文件里的语录条数
这个超简单,把JSON解析成字典后,直接用len()函数就能拿到键值对的数量,也就是语录的条数:
代码示例:
import json import os def get_total_quotes(): quote_file_path = "quotes.json" # 文件不存在的话就是0条 if not os.path.exists(quote_file_path): return 0 with open(quote_file_path, 'r', encoding='utf-8') as f: quotes_dict = json.load(f) return len(quotes_dict) # 看看当前有多少条 print(f"现在一共有 {get_total_quotes()} 条语录")
几个小建议
- 编码一定要指定
utf-8,不然存中文语录容易乱码 - 如果你的机器人后期可能有多人同时加语录的情况,要注意文件写入冲突(小项目暂时不用管,真遇到了可以加个文件锁)
- 其实当前的
quote1这种键名结构有点冗余,换成数组[{"content":"xxx"}, {"content":"xxx"}]的话,后期要加作者、时间这类字段会更灵活,不过如果只是单纯存语录,当前结构完全够用~
内容的提问来源于stack exchange,提问作者Vinnie Leone
相关产品推荐
相关产品推荐

