Skip to content

Instantly share code, notes, and snippets.

@rusnino
Created February 12, 2019 21:09
Show Gist options
  • Save rusnino/5fa00f799782c58f0711690916e7ddd0 to your computer and use it in GitHub Desktop.
Save rusnino/5fa00f799782c58f0711690916e7ddd0 to your computer and use it in GitHub Desktop.
# -*- coding: utf-8 -*-
'''
Задание 9.4
Создать функцию, которая обрабатывает конфигурационный файл коммутатора
и возвращает словарь:
* Все команды верхнего уровня (глобального режима конфигурации), будут ключами.
* Если у команды верхнего уровня есть подкоманды, они должны быть в значении у соответствующего ключа, в виде списка (пробелы в начале строки можно оставлять).
* Если у команды верхнего уровня нет подкоманд, то значение будет пустым списком
Функция ожидает в качестве аргумента имя конфигурационного файла.
Проверить работу функции на примере файла config_sw1.txt
При обработке конфигурационного файла, надо игнорировать строки, которые начинаются с '!',
а также строки в которых содержатся слова из списка ignore.
Для проверки надо ли игнорировать строку, использовать функцию ignore_command.
Ограничение: Все задания надо выполнять используя только пройденные темы.
'''
ignore = ['duplex', 'alias', 'Current configuration']
def ignore_command(command, ignore):
'''
Функция проверяет содержится ли в команде слово из списка ignore.
command - строка. Команда, которую надо проверить
ignore - список. Список слов
Возвращает
* True, если в команде содержится слово из списка ignore
* False - если нет
'''
return any(word in command for word in ignore)
def generate_config_dict(filename):
'''
'''
config_dict = {}
with open(filename, 'r') as f:
for line in f:
if not line.startswith('!') and not ignore_command(line, ignore) and not line.startswith(' '):
keyword = line.rstrip()
elif not line.startswith('!') and not ignore_command(line, ignore):
config_dict[keyword].append(line.rstrip())
return(config_dict)
config_dict = generate_config_dict('config_sw1.txt')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment