@alina_yadtskaya

Как создать такой цикл?

Есть такая конструкция:
items = json.loads(z_api.call('/v3/statistic/ab/'))
f = open("blacklist.txt", "r+")
f.readlines()
for elem in items['stats']:
    if elem["sip"] in f:
        pass
    else:
        s = str(elem["sip"] + '\n')
        f.write(s)
f.close()

Я пытаюсь вытащить значение sip итерацией и добавить его в blacklist.txt, если его там раньше не было. Почему ничего не происходит? Файл пустой остается. В последующем планирую к нему обращаться и сверять. Если sip который будет в цикле, будет присутствовать в этом файле, то будет pass, если нет, то добавлять.
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 2
@o5a
Приведите пример данных. Возможно запросы не соответствуют структуре.
Из того, что есть, вижу 2 ошибки
s = str(elem["sip"] + '\n')
если elem["sip"] не текстовый, то подобная конструкция выдаст ошибку, т.к. str не правильно использован.
f.readlines()
...
    if elem["sip"] in f:
проверка не будет работать, т.к. f пустой, readlines() уже перемотал указатель в конец файла.
Ответ написан
SoreMix
@SoreMix Куратор тега Python
yellow
if elem["sip"] in f:

Вы проверяете наличие элемента не в тексте файла, а в объекте open

f = open("blacklist.txt", "r+")
data = f.readlines()
if elem["sip"] in data:
  # ...


Ну и если ничего не планируется больше в if, то тогда уж можно сделать
if elem["sip"] not in data:
    f.write(elem['sip'] + '\n')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы