2014-07-18 23 views
2

我試圖讀取配置文件的一些值params.txt在使用Python ConfigParser但要得到一個MissingSectionHeadErrorConfigParser.MissingSectionHeaderError讀取時的配置文件的Python

我有一個文件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' 

怎麼了?

回答

3

出於某種原因,你正在做的:

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