简体   繁体   中英

python configparser writes integers within square brackets

I am reading a config file with Python's ConfigParser (Python 3.4). My values are all integers, eg

key1 = 11
key2 = 22

When I write the config file, after having read it into a Config object, with

with open('settings.ini', 'w') as configfile:
    Config.write(configfile)

my file ends up looking like this:

key1 = ['11']
key2 = ['22']

Why is the file being written like this, and not as it originally was?

key1 = 11
key2 = 22

Because you are passing list instead of the list's value?

Your should be setting the value, by something like this:

config.set('section1', 'key1', key_val_variable)

Can you try printing 'key_val_variable'

Please try:

import ConfigParser

config = ConfigParser.ConfigParser()
config.read("settings.ini")

key_var = ['key1']

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

config.set('section1', 'key1', key_var)
config.set('section1', 'key2', key_var[0])

with open("settings.ini", 'wb') as configfile:
   config.write(configfile)

I found my problem. In my long list of 800+ options, I had some duplicate keys, which was corrupting the parsing of the ini file. When I removed the duplicate keys, all worked as expected.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM