Python使用haralyzer库循环解析HAR文件报AttributeError如何解决
错误原因
报错AttributeError: 'int' object has no attribute 'loads'的核心原因是:你当前代码运行环境中,json这个名称已经不是Python标准库的json模块了,被你在其他位置(大概率是循环代码之前的代码/交互式环境之前运行的代码段)赋值为了整数类型,此时调用json.loads本质是尝试对整数调用loads方法,自然抛出属性不存在的错误。
你提到不使用循环时代码正常,是因为无循环代码运行时你还没有覆盖json的模块指向,后续操作重写了json变量才导致循环运行时报错。
解决方案
- 排查所有代码中对
json变量的赋值操作,修改占用json名称的变量名,不要用已导入的模块名作为自定义变量名。 - 如果你使用的是Jupyter等交互式运行环境,直接重启内核,先执行正确的导入语句,再运行你的代码即可。
- 优化你的循环写法,避免索引遍历可能带来的越界问题,同时增加编码声明防止跨系统读文件异常,参考代码如下:
# 先确认正确导入依赖,不要覆盖json名称 import json from haralyzer import HarParser sites=['altervista.org', 'amazon.it', 'ansa.it'] for site in sites: y = f"{site}.har" # 指定utf-8编码读取,避免不同系统默认编码不一致导致的乱码问题 with open(y, 'r', encoding='utf-8') as f: har_parser = HarParser(json.loads(f.read())) data = har_parser.har_data # 后续对data的处理逻辑写在此处即可
内容的提问来源于stack exchange,提问作者Mahsa Abdolrezaei
相关产品推荐
相关产品推荐

