ConfigParser.MissingSectionHeaderError при чтении файла конфигурации Python
Я пытаюсь прочитать некоторые значения из файла конфигурации params.txt, используя ConfigParser в Python, но продолжаю получать MissingSectionHeadError
У меня есть файл params.txt:
[all]
zigzag = 0.08
fractal = 0.03
rng_length = 1000
stp = 100
и следующий код:
parser = cp.SafeConfigParser()
g = open(params, 'r')
g.readline()
parser.readfp(g)
print parser.getfloat('all', zigzag)
где я получаю эту ошибку:
Traceback (most recent call last):
File "deadrabbit_console_0-1.py", line 166, in <module>
DRconsole().cmdloop()
File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
return func(arg)
File "deadrabbit_console_0-1.py", line 127, in do_load_data
get_data(series, params)
File "deadrabbit_console_0-1.py", line 115, in get_data
parser.readfp(g)
File "/usr/lib/python2.7/ConfigParser.py", line 324, in readfp
self._read(fp, filename)
File "/usr/lib/python2.7/ConfigParser.py", line 512, in _read
raise MissingSectionHeaderError(fpname, lineno, line)
ConfigParser.MissingSectionHeaderError: File contains no section headers.
file: /home/baconwichsand/Documents/Dead Rabbit/params.txt, line: 1
'zigzag = 0.08\n'
В чем дело?
1 ответ
Решение
По какой-то причине вы делаете:
g.readline()
перед передачей файла readfp
, Это будет читать строку, содержащую [all]
так когда SafeConfigParser
читает файл, он не будет читать заголовок раздела, и вы получите эту ошибку. Чтобы исправить это просто не звоните readline()
:
In [4]: parser = cp.SafeConfigParser()
...: with open('data.ini', 'r') as g:
...: parser.readfp(g)
...: print(parser.getfloat('all', 'zigzag'))
0.08