Как продолжить после, кроме - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть этот скрипт, который преобразует имена хостов в IP-адреса.Однако, когда он находит тот, который не существует, он останавливается.Я хотел бы, чтобы это продолжалось, хотя было исключение, однако я не могу найти свой путь.

#Script to resolve hostname to IP. Needs improving.
import socket

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

def resolve_ip():

with open("test.txt", "r") as ins:
    try:
        for line in ins:
            print(socket.gethostbyname(line.strip()))

    except Exception:
            print(line)


resolve_ip()

В основном, это печатает все IP, пока не возникнет ошибка.Как я могу продолжить после исключения преобразование левых строк?

Спасибо

1 Ответ

0 голосов
/ 04 декабря 2018
#Script to resolve hostname to IP. Needs improving.
import socket

def resolve_ip(file_name):
    with open(file_name, "r") as ins:
        for line in ins:
            line = line.strip()
            try:
                print(socket.gethostbyname(line))
            except socket.gaierror:
                print(line)

resolve_ip('test.txt')

Обратите внимание, что ваша другая функция вызовет исключение, если файл пуст.Также вам не нужно перебирать файл.используйте readlines() метод объекта файла, чтобы прочитать все строки в списке, а затем просто вернуть len этого списка.

...