2013-12-17 2 views
0

Версия IOS, имя маршрутизатора, адреса IP-хоста, порт Ethernet и последовательный порт IP-адреса. Есть вещи, которые мне нужно извлечь из текстового файла редактироватьВерсия для удаления данных Python 3.x

Я отправил вопрос родственного Python раньше, и я не дал достаточно информации, или что-нибудь для вас, ребят, чтобы работать. Я пытаюсь извлечь данные из текстового файла. Скопируйте и вставьте текст по следующей ссылке, если вы хотите получить точный текстовый файл. http://content.hccfl.edu/dalemabry/dpt/cs/cisco/current/laba.htm

Проблема, с которой я сталкиваюсь, - это отсутствие знаний для сбора определенных строк из текстового файла. Жесткая часть, которую я не смог объяснить, - как мне заставить IDE искать конкретное слово, например «Ethernet», и распечатать IP-адрес, который следует за ним? Даже если этот IP-адрес не может быть указан для 4-5 строк.

Вот мой код, пока он хорошо печатает все.

sesame = open('sample1.txt', 'r'); contents = sesame.read() 

for hostname in open('sample1.txt'): 
    if "hostname " in hostname: 
     print ("The name of the router is : " + hostname) 
     break; 
for version in open('sample1.txt'): 
    if "version " in version: 
     print ("The version of this router is : " + version) 
     break; 
print (" ***********************************" + "\n" + "The following allows name to IP address resolution" + "\n") 
for hostb in open('sample1.txt'): 
    if "ip host lab-b " in hostb: 
     print (hostb) 
     break; 
for hostc in open('sample1.txt'): 
    if "ip host lab-c " in hostc: 
     print (hostc) 
     break;  
for hostd in open('sample1.txt'): 
    if "ip host lab-d " in hostd: 
     print (hostd) 
     break;  
for hoste in open('sample1.txt'): 
    if "ip host lab-e " in hoste: 
     print (hoste) 
     break; 
for hostf in open('sample1.txt'): 
    if "ip host lab-f " in hostf: 
     print (hostf) 
     break; 
+1

Гоша, почему эта запятая ';', вы не нуждаются в них. – alko

+1

Gosh, почему постоянное повторное открытие того же файла. Почему бы не прочитать эту информацию * один раз *? –

+1

Regex может быть хорошим решением для вашего «Как получить IDE для поиска определенного слова, например« Ethernet », и распечатать IP-адрес, который следует за ним? Даже если этот IP-адрес не может быть указан для 4-5 строк ". Я наберу ответ, но похоже, что есть больше проблем, чем просто это! Что именно вы пытаетесь извлечь из файла. –

ответ

0
with open('path/to/input') as infile: 
    getip = False 
    iface = None 
    interfaces = ['ethernet'] # or whatever other interfaces' IPs you want 
    props = ['ip address'] # include IOS, name of the router, etc 
    for line in infile: 
     if any(line.startswith(w) for w in interface): 
      iface = line.split(None, 1)[0] 
      getip = True 
     elif getip: 
      for prop in props: 
       if line.startswith(prop) 
        getip = False 
        print(iface, ":", prop, line.replace(prop, '').split(None, 1)[0]) 
        break 
+0

Hey Inspector, это ничего не печатает для меня, когда я ввожу свой .txt-файл. – user3111629

+0

Пожалуйста, разместите образец ввода и ожидаемый результат – inspectorG4dget

Смежные вопросы