#python #python-3.x #get
Вопрос:
Пытаюсь получить каждый ответ, чтобы сохранить. Пока он печатает только все ответы и сохраняет один. Пожалуйста, помогите. Изменить: нужна помощь в сохранении всех ответов.
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()
Комментарии:
1. на каждой итерации цикла for вы перезаписываете
data.json
2. при использовании
with
контекстного менеджера нет необходимости закрывать файл. об этом позаботится контекстный менеджер3. Кроме того, если вам нужна только одна строка (
sha256
) из каждого ответа, действительно ли вам нужен выходной файл JSON?
Ответ №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
список (обратите внимание на множественное число в имени — в своем коде вы просто перезаписываете пустой список, повторно используя имя resource
в цикле for). Затем сбросьте список (это будет массив JSON) в файл JSON .
Комментарии:
1. тай, это сработало лучше всего для того, что я делаю!
Ответ №2:
В каждой итерации цикла вы перезаписываете data.json
. Вместо этого вы можете добавить к нему, открыв его в a
режиме («добавить») вместо w
режима («запись»).:
with open('data.json', 'a') as J:
# Here -------------^
Комментарии:
1. ТАЙ! Я слишком много думал об этом.
2. ну, результирующий файл не будет действительным JSON. это будет просто несколько ответов JSON один за другим.
3. 🙁 как вы предлагаете сделать его допустимым файлом json?