Дописывание в файл новых элементов
Есть онлайн журнал, из которого по API берутся данные и записываются в файл. Подскажите, как реализовать функционал записи в файл только отсутствующих элементов? Есть файл 1.txt с содержимым
Март 15 Журнал Версия:1|11Б|действие=Присутствие|ФИО=Иванов_Иван_Иванович внес=староста
Март 15 Журнал Версия:1|11Б|действие=Присутствие|ФИО=Петров_Петр_Петрович внес=староста
По API забираются данные:
Март 15 Журнал Версия:1|11Б|действие=Присутствие|ФИО=Иванов_Иван_Иванович внес=староста
Март 15 Журнал Версия:1|11Б|действие=Присутствие|ФИО=Петров_Петр_Петрович внес=староста
Март 15 Журнал Версия:1|11Б|действие=Присутствие|ФИО=Александров_Александр_Александрович внес=староста
В файл 1.txt должна дописаться только инфа об Александров_Александр_Александрович (ФИО - ключевое поле, по которому должно происходить сравнение в независимости от других полей). Понимаю, что нужно для начала прочитать 1.txt, но не понимаю, как реализовать проверку имеющихся данных и их сравнение с теми, что забираются по API.
Код скрипта, забирающего по API (пока только полная перезапись файла):
import requests
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # отключаем варнинги
headers = {
'Accept': 'application/json',
'Authorization': 'APIKEY_DEFAULT',
'Content-Type': 'application/json',
} # прописали хидеры
response = requests.get('https://192.168.100.10/stud/exportModule/stud_export/1', headers=headers, verify=False) #загрузка всех учащихся
file = open('/home/1.txt','w') #создаем файл для записи результатов
file.write(response.text) #записываем результат
file.close() #закрываем файл
Спасибо!
Ответы (1 шт):
К сожалению ваш пример с get-запросом у меня не работает, поэтому не понятно, в каком виде вам приходит ответ, но допустим ответ вы преобразовали в список однотипных строк, по формату таких же, как и в записываемом файле, тогда можно действовать так:
list_fio_result = []
with open('/home/1.txt',encoding="utf-8") as file:
for str_fio in file:
fio_file = str_fio.split("ФИО=")[1].split(" внес=")[0]
list_fio_result.append(fio_file)
for str_fio in response:
fio_resp = str_fio.split("ФИО=")[1].split(" внес=")[0]
if fio_resp not in list_fio_result:
with open('/home/1.txt', mode="a", encoding="utf-8") as file:
file.write("\n"+str_fio)