为何JSON文件未成功写入?代码执行异常排查咨询
排查JSON写入失败的常见原因及解决办法
1. 未初始化news_dict字典
如果代码里没提前声明news_dict = {},直接给news_dict[article_id]赋值会触发报错,导致后续写入代码根本执行不到。
解决:在赋值逻辑前添加字典初始化代码:
news_dict = {}
2. 变量存在不兼容JSON的类型或未赋值
article_date_timestamp等变量如果是Python专属类型(比如datetime对象、自定义类实例),或者根本没被赋值,json.dump会直接抛出异常中断执行。
- 检查所有变量是否都已正确赋值,比如
article_id得是字符串/数字这类JSON支持的类型; - 如果
article_date_timestamp是datetime对象,先转成JSON兼容的格式:# 转成ISO标准字符串 "article_date_timestamp": article_date_timestamp.isoformat() # 或者转成整数时间戳 "article_date_timestamp": int(article_date_timestamp.timestamp())
3. 文件路径无写入权限
如果当前工作目录没有写入权限,open("news_dict.txt", 'w')会触发权限错误,导致文件创建或写入失败。
解决:检查目标路径的权限,或者直接指定绝对路径确保可访问:
# Windows示例:指定桌面路径 with open("C:/Users/xxx/Desktop/news_dict.txt", 'w', encoding='utf-8') as file: json.dump(news_dict, file, indent=4, ensure_ascii=False)
4. 代码缩进错误
你提供的代码里,字典赋值部分有缩进,如果这部分代码不在正确的执行块里(比如遍历新闻的循环外),可能根本没执行赋值逻辑,最后写入的只是空字典{}。
解决:检查缩进层级,确保赋值代码确实会被执行(比如放在爬取/遍历新闻的循环内部)。
5. 未捕获执行异常
如果代码执行中抛出异常但没做处理,你可能看不到错误信息,误以为是写入失败。
解决:加个异常捕获块,直接打印具体错误:
import json news_dict = {} # 这里补充获取新闻数据、给变量赋值的逻辑 try: news_dict[article_id] = { "article_date_timestamp": article_date_timestamp, "article_title": article_title, "article_url": article_url, "article_desc": article_desc } with open("news_dict.txt", 'w', encoding='utf-8') as file: json.dump(news_dict, file, indent=4, ensure_ascii=False) except Exception as e: print(f"错误详情:{e}")
内容的提问来源于stack exchange,提问作者Python1177
相关产品推荐
相关产品推荐

