【问题标题】:Writing only one response, why?只写一个回复,为什么?
【发布时间】:2021-05-18 04:28:19
【问题描述】:

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

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()

【问题讨论】:

  • 在 for 循环的每次迭代中,您都会覆盖 data.json
  • 使用with上下文管理器时不需要关闭文件。上下文管理器会处理它
  • 另外,如果您只想从每个响应中获取一个字符串 (sha256),您真的需要输出文件为 JSON 格式吗?

标签: python python-3.x get


【解决方案1】:
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 文件中。

【讨论】:

  • ty,这对我正在做的事情来说效果最好!
【解决方案2】:

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

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

【讨论】:

  • TY!我想多了。
  • 好吧,生成的文件将不是有效的 JSON。它只是一个接一个的多个 JSON 响应。
  • :-( 你如何建议将其修复为有效的 json 文件?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2016-08-18
相关资源
最近更新 更多