2016-04-21 2 views
1

У меня есть файл инвентаря формата.Список владельцев ConfigParser в разных разделах файла инвентаризации?

[web] 
web1 
web2 
web3 

[loadbalancer] 
lb1 
lb2 
lb3 

[admin] 
adm1 
adm2 
adm3 

Я хочу, чтобы читать хосты из разных разделов файла. Так, например, чтобы перечислить все разделы, которые я пробовал.

import ConfigParser 
parser = ConfigParser.ConfigParser() 
parser.read('hosts.cfg') 
parser.sections() 

Но это напечатало все серверы со следующими ошибками.

Traceback (most recent call last): 
    File "./server_audit.py", line 55, in <module> 
    parser.read('hosts.cfg') 
    File "/usr/lib64/python2.6/ConfigParser.py", line 286, in read 
    self._read(fp, filename) 
    File "/usr/lib64/python2.6/ConfigParser.py", line 510, in _read 
    raise e 
ConfigParser.ParsingError: File contains parsing errors: hosts.cfg 
    [line 2]: 'web1\n' 
    [line 3]: 'web2\n' 
    [line 4]: 'web3\n' 
    [line 7]: 'lb1\n' 
    [line 8]: 'lb2\n' 
    [line 9]: 'lb3\n' 
    [line 12]: 'adm1\n' 
    [line 13]: 'adm2\n' 
    [line 14]: 'adm3\n' 

ответ

1

Конфигурационный файл должен иметь вид:

[web] 
web1 = value1 
web2 = value2 
web3 = value3 

Etc.

Таким образом, левая часть является «ключом», который используется для взгляда вверх. Правая часть - это значение для этого ключа. Пример:

[web] 
web1 = http://www.example.org 
+0

Вы говорите, что я вынужден иметь пару с ключом? Я пробовал использовать параметр allow_no_value, но я думаю, что он не примет этого, потому что я использую python 2.6. – rahimbah

+0

Да, это должна быть пара ключ-значение. Вы можете сделать несколько значений на ключ, хотя key = value1, value2, value3. Значение allow_no_value должно принимать ключи без значений. –

+0

FYI: Похож на аналогичный вопрос здесь: http://stackoverflow.com/questions/17342045/configparser-and-section-with-values-without-keys –

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