Я часами пытался использовать Google и переполнение стека, чтобы прочитать список IP-адресов и вернуть сети. Команда ip address работает в оболочке Python, но, похоже, работает с импортированным списком. Я попытался удалить новую строку и прочитать файл несколькими различными способами, но я получаю сообщение об ошибке. Я уверен, что это связано с тем, как я читаю файл, но я просто не могу понять это.
Вот текущий код. Давайте назовем это ревизией номер 4186!
import ipaddress
def process(line):
# Output network with mask bits (192.168.0.0/24)
try:
return ipaddress.IPv4Interface(line).network
except Exception:
return print("FAIL_OR_EMPTY")
with open('ipaddrlong.txt', 'r') as f:
for line in f:
process(line)
и входной файл называется так. Есть только данные и новая строка (/n).
192.168.252.146/24
192.168.252.158/24
192.168.252.203/24
192.168.252.209/24
Если я поменяю обратную строку на простой шрифт, мне он будет выглядеть прекрасно.
'192.168.252.146/24', '192.168.252.158/24', '192.168.252.203/24', '192.168.252.209/24'
И когда я пробую команду из оболочки, она, кажется, работает нормально:
>>> x="192.168.0.1/24"
>>> ipaddress.IPv4Interface(x).network
IPv4Network('192.168.0.0/24')
Но когда я запускаю скрипт, возвращается исключение "FAIL_OR_EMPTY".