Прочитать список IP-адресов из файла и вернуть сеть - PullRequest
0 голосов
/ 27 октября 2018

Я часами пытался использовать 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".

1 Ответ

0 голосов
/ 27 октября 2018

Насколько я могу судить, у вас есть проблема с пробелами после ваших IP-адресов, которые вы должны сначала удалить из строки, примерно так:

import ipaddress
def process(line):
    # Output network with mask bits (192.168.0.0/24)
    try:
        return print(ipaddress.IPv4Interface(line).network)
    except Exception:
        return print("FAIL_OR_EMPTY")
with open('in.txt', 'r') as f:
    for line in f:
        line = "".join(line.split())
        process(line)

My in.txtвыглядит так

192.168.252.146/24
192.168.252.158/24
192.168.252.203/24
192.168.252.209/24
I'm not an IP adr
192.168.252.209/24

Вывод

192.168.252.0/24
192.168.252.0/24
192.168.252.0/24
192.168.252.0/24
FAIL_OR_EMPTY
192.168.252.0/24
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...