读取配置文件时出现ConfigParser.MissingSectionHeaderError错误 Python

2 投票
1 回答
8216 浏览
提问于 2025-04-18 13:50

我正在尝试用Python中的ConfigParser从一个配置文件params.txt读取一些值,但总是遇到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 个回答

3

出于某种原因,你在把文件传给 readfp 之前做了:

g.readline()

这会读取包含 [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

撰写回答