Мне не удалось использовать bicop для таких классических файлов зон:
$TTL 86400
@ IN SOA ns1.first-ns.de. postmaster.robot.first-ns.de. (
2006040800 ; serial
14400 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
@
IN NS ns1.first-ns.de.
Я посмотрю на dnspython
Вы могли бы попробовать bicop
, "библиотека Python для обработки конфигурационных файлов связывать-стиля ISC".
См. ответ выше о bicop.
Как в стороне, Индекс Пакета Python по http://pypi.python.org/pypi является великолепным местом для поиска пакетов Python.
Править: Ниже мая все еще быть полезным кому-то пытающемуся выяснять простой парсинг, но bicop, по-видимому, существующее решение.
Если кто-то изменил конфигурацию вручную, и Вы не хотите перезаписывать ее, который подразумевает, что Вы хотите вставить/удалить строки от существующей конфигурации, оставляя все комментарии и т.д. неповрежденными? Это действительно предотвращает парсинг, затем повторно производящий конфигурацию, но это - положительное также - Вы не должны полностью анализировать файл для выполнения цели.
Для добавления записи Вы могли бы попробовать простой подход как
# define zone_you_care_about and line_you_wish_to_insert first, then:
for line in bindfile.read():
out.write(line + '\n')
if ('zone "%s" in' % zone_you_care_about) in line:
out.write(line_you_wish_to_insert)
Подобный код работает на удаление строки:
# define zone_you_care_about and relevant_text_to_remove, then:
for line in bindfile.read():
if not relevant_text_to_remove in line:
out.write(line + '\n')
Можно добраться насколько Вам нужно с простыми отрывками кода как это.