只写一个回复,为什么?

Writing only one response, why?

正在尝试获取每个响应以进行保存。 到目前为止,它只打印所有响应并保存一个。 请帮忙。 编辑:需要帮助保存所有回复。

import requests
import json

url = 'https://www.virustotal.com/vtapi/v2/file/report'
resource = []
with open("/PATH/hashes.txt", "r") as f:
    for resource in f:
        print(resource)
        params = {'apikey': 'API KEY HERE', 'resource': resource}
        response = requests.get(url, params=params)
        response1 = response.json()
        print(response.json())
        with open('data.json', 'w') as J:
            json.dump(response1, J, indent=6)

已更新!!感谢大家的帮助!

import requests
import json

url = 'https://www.virustotal.com/vtapi/v2/file/report'
params = {'apikey': 'API KEY HERE'}
resources = []
with open("/PATH/hashes.txt", "r") as f:
    for resource in f:
        print(resource)
        params['resource'] = resource
        response = requests.get(url, params=params)
        json_data = response.json()['sha256']
        print(json_data)
        resources.append(json_data)

with open('data.json', 'w') as J:
    json.dump(resources, J, indent=6)
J.close()
f.close()

在循环的每次迭代中,您都会覆盖 data.json。相反,您可以通过使用 a 模式(“附加”)而不是 w 模式(“写入”)打开它来附加到它:

with open('data.json', 'a') as J:
    # Here -------------^
import requests
import json

url = 'https://www.virustotal.com/vtapi/v2/file/report'
params = {'apikey': 'API KEY HERE'}
resources = []
with open("/PATH/hashes.txt", "r") as f:
    for resource in f:
        print(resource)
        params['resource'] = resource
        response = requests.get(url, params=params)
        json_data = response.json()
        print(json_data)
        resources.append(json_data)

with open('data.json', 'w') as f:
    json.dump(resources, f, indent=6)

在您的原始代码中,您在循环的每次迭代中都覆盖了 data.json。 将每个 JSON 响应附加到 resources 列表(注意名称中的复数 - 在您的代码中,您只是通过在 for 循环中重用名称 resource 来覆盖空列表)。然后将列表(它将是 JSON 数组)转储到 JSON 文件中。