Writing comments to files with ConfigParser Writing comments to files with ConfigParser python python

Writing comments to files with ConfigParser


You can use the allow_no_value option if you have Version >= 2.7

This snippet:

import ConfigParserconfig = ConfigParser.ConfigParser(allow_no_value=True)config.add_section('default_settings')config.set('default_settings', '; comment here')config.set('default_settings', 'test', 1)with open('config.ini', 'w') as fp:    config.write(fp)config = ConfigParser.ConfigParser(allow_no_value=True)config.read('config.ini')print config.items('default_settings')

will create an ini file like this:

[default_settings]; comment heretest = 1


Update for 3.7

I've been dealing with configparser lately and came across this post. Figured I'd update it with information relevant to 3.7.

Example 1:

config = configparser.ConfigParser(allow_no_value=True)config.set('SECTION', '; This is a comment.', None)

Example 2:

config = configparser.ConfigParser(allow_no_value=True)config['SECTION'] = {'; This is a comment':None, 'Option':'Value')

Example 3: If you want to keep your letter case unchanged (default is to convert all option:value pairs to lowercase)

config = configparser.ConfigParser(allow_no_value=True)config.optionxform = strconfig.set('SECTION', '; This Comment Will Keep Its Original Case', None)

Where "SECTION" is the case-sensitive section name you want the comment added to. Using "None" (no quotes) instead of an empty string ('') will allow you to set the comment without leaving a trailing "=".


You can create variable that starts by # or ; character:

conf.set('default_settings', '; comment here', '')conf.set('default_settings', 'test', 1)

created conf file is

    [default_settings]    ; comment here =     test = 1

ConfigParser.read function won't parse first value

config = ConfigParser.ConfigParser()config.read('config.ini')print config.items('default_settings')

gives

[('test','1')]