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')]