2011-07-01 64 views
0

我有问题追加到配置文件。这是我想要创建的;ConfigParser问题Python

[section1] 
val1 = val2 
val3 = val4 

但是当我运行下面的代码,我看到ConfigParser.NoSectionError: No section: 'section1'

import ConfigParser 

cfg = ConfigParser.RawConfigParser() 
cfg.set("section1", "val1", "val2") 

f = open("example.cfg", "a") 
cfg.write(f) 

如果我添加

if not cfg.has_section("section1"): 
    cfg.add_section("section1") 

,然后,这是我得到的;

[section1] 
val1 = val2 

[section1] 
val3 = val4 

有人能指点我做错了什么吗?谢谢

+0

没有它的作品。我想我没有说清楚。我在cfg.set()之前添加if语句。我想这就是让你迷惑的原因。 – Ivan

回答

5

我充实了你放了一下的代码。您在检查该部分之前是否正在阅读现有文件?另外,您应该一次写入整个文件。不要追加。

import ConfigParser 

cfg = ConfigParser.ConfigParser() 
cfg.read('example.cfg') 

if not cfg.has_section('section1'): 
    cfg.add_section('section1') 

cfg.set('section1', 'val1', 'val2') 
cfg.set('section1', 'val2', 'val3') 

f = open('example.cfg', 'w') 
cfg.write(f) 
f.close() 
+0

我忘了关闭文件。谢谢。是的,我正在阅读现有文件。这就是为什么我要追加新值到文件。那么我应该阅读现有的文件并使用新值重新编写它? – Ivan

+0

如果你用你的更新写出配置文件,你以前的所有值都会存在,所以是的。 – apg

+0

正常工作与cfg文件更新:) – passionTime