почему в файле сохраняется только последняя строка?

    if '.194.100' in output:
        # with open('DHCP.txt', 'w') as file:
        #     file.write(output)
        for line in ip_mac_lines:
            if '0100' not in line:
                ok = line.split()
                f = operator.itemgetter(1)
                okk = str(f(ok))
                okk = okk.replace("'", "")
                okk = re.sub(r'[\(\)]', '', str(okk))
                okk = okk.replace(".", "")
                if '01' in okk:
                    okk = okk[2:]
                    #print(okk)
                    mac = ':'.join(okk[i:i + 2] for i in range(0, len(okk), 2))
                    #send_email(mac)
                    with open('DHCP010101.txt', 'w') as file:
                        file.write(mac)
                    if '00:23' in mac:
                        print(mac)

Ответы (1 шт):

Автор решения: n1tr0xs

Вообще в комментариях уже сказали, что вы ошиблись в методе открытия файла (не w, a a). Но если вы хотите, чтобы при каждом запуске файл очищался, то есть 2 варианта:

  1. Собственно, намеренно выделить строку для очищения файла:
with open('DHCP010101.txt', 'w'): pass

if '.194.100' in output: 
# ваш остальной код, в котором файл открывается `open('DHCP010101.txt', 'a')`
# вот так
with open('DHCP010101.txt', 'a') as file:
    file.write(mac)
  1. Или так:
file = open('DHCP010101.txt', 'w')
if '.194.100' in output: 
# ваш остальной код без открытий файла. 
# вот так
file.write(mac)

file.close() # не забудьте эту строку цикла
→ Ссылка