我的conf文件包含以下内容:
key1=value1
key2=value2
font="\"Font\""
,它的用法类似于bash脚本中的值。
当我使用cgi + python3和ConfigObj 4.7.0更改某些值时:
def set_conf_values(filename, param, value):
config = ConfigObj(filename)
config['%s' % param] = value
config.write()
,该conf文件被重写并且格式为新的:
key1 = value1
key2 = value2
font = `\"Font\"`
未更改的值的事件。 这破坏了我的Bash脚本,它以键作为命令。...
我希望可以避免这种情况,但是在文档中找不到这种东西。
答案 0 :(得分:0)
似乎没有任何有意义的方法来控制ConfigObj的输出。不过,ConfigParser具有一个space_around_delimiters=False
关键字参数,您可以传递该参数来编写。
config.conf:
[section1]
key1=value1
key2=value2
font="\"Font\""
代码:
import configparser
from validate import Validator
def set_conf_values(filename, section, param, value):
config = configparser.ConfigParser()
config.read(filename)
print({section: dict(config[section]) for section in config.sections()})
config[section]['%s' % param] = value
with open('config2.conf', 'w') as fid:
config.write(fid, space_around_delimiters=False)
filename = 'config.conf'
set_conf_values(filename, 'section1', 'key2','value2_modified')
config2.conf(输出):
[section1]
key1=value1
key2=value2_modified
font="\"Font\""
关于ConfigParser的可怕之处在于,它确实需要节名称。有详细的解决方法,但是此代码可以帮助您入门。