使用Python查找错误检测的发生率

时间:2018-06-21 19:34:04

标签: python json api

我正在尝试计算扫描检测到文件为假的次数。我尝试查看诸如Looking for a specific value in JSON file之类的链接,但并没有解决我的问题。此外,我还没有使用API​​太多,因此将不胜感激任何帮助。

这是我到目前为止所拥有的。

# Making the API call
url = 'https://www.virustotal.com/vtapi/v2/file/report'
params = {'apikey': api_key, 'resource': sha1_num}

response = requests.get(url, params=params)
allJson = response.json()
data = json.dumps(allJson)

count = 0

item_dict = json.loads(data)
print len(item_dict['scans']

for entry in data['scans']:
    if entry['detected'] == 'false':
        count += 1
print (count)

而且,这是sublime.exe的结果对病毒总数的影响

{
  "scans": {
    "Bkav": {
      "detected": false,
      "version": "1.3.0.9466",
      "result": null,
      "update": "20180619"
    },
    "MicroWorld-eScan": {
      "detected": false,
      "version": "14.0.297.0",
      "result": null,
      "update": "20180619"
    },
    "CMC": {
      "detected": false,
      "version": "1.1.0.977",
      "result": null,
      "update": "20180619"
    },
    "CAT-QuickHeal": {
      "detected": false,
      "version": "14.00",
      "result": null,
      "update": "20180619"
    },
    "ALYac": {
      "detected": false,
      "version": "1.1.1.5",
      "result": null,
      "update": "20180619"
    },

1 个答案:

答案 0 :(得分:0)

我非常确定此循环:for entry in data['scans']:不会做您想要的事情。您要迭代的data['scans']是一本字典,当您在字典上进行迭代时,您会得到它的键(它们是数据中不同测试的名称,看起来像)。您的代码希望获得字典而不是键串,因此无法正常工作。

尝试使用for entry in data['scans'].values():遍历字典的值。您可能还想测试布尔值False,而不是字符串'false',因为Python的json解析器将为您转换它(您可以进行if not entry['detected']: )。