Вы звоните f.readlines()
дважды. Первый раз читает все в файле и помещает это в lines
. Во второй раз нечего читать (он начинает чтение с текущей позиции файла, он не перематывается в начало), поэтому он возвращает пустой список, и raw_data
будет просто "[]"
без IP-адресов.
Просто позвоните f.read()
один раз и назначьте его на raw_data
.
Затем вам нужно l oop по IP-адресам, найденным с помощью регулярного выражения, а не lines
.
import socket
import re
with open('ipidk.txt' , 'r') as f:
raw_data = f.read()
regex = r'(?:\d{1,3}\.){3}\d{1,3}'
foundip = re.findall( regex, raw_data )
for host in foundip:
try:
dns = socket.gethostbyaddr(host)
print("%s - %s" % (host, dns))
except socket.error as exc:
pass