2015-12-29 3 views
1

Я читаю конфигурационный файл с ConfigParser Python (Python 3.4). Мои значения являются целыми числами.python configparser пишет целые числа в квадратных скобках

key1 = 11 
key2 = 22 

Когда я пишу конфигурационный файл, после прочтения его в объект Config, с

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

мой файл заканчивает тем, как это:

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

Почему файл написано так, а не так, как изначально было?

key1 = 11 
key2 = 22 

ответ

0

Поскольку вы передаете список вместо значения списка?

Вы должны установить значение, что-то вроде этого:

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

Вы можете попробовать печати 'key_val_variable'

Пожалуйста, попробуйте:

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) 
+0

На самом деле это происходит, даже если я просто прочитал ini-файл, а затем напишу его, не задавая никаких значений. В моем ini-файле содержится 888 значений. Проблема, похоже, связана с размером файла. Если в два раза уменьшить размер файла, чтобы иметь только 400 или около того записей, он работает так, как ожидалось, причем значения будут переписаны как 11 вместо ['11'] – AndrWeisR

0

я нашел мою проблему. В моем длинном списке из 800 + вариантов у меня были несколько дубликатов ключей, что искажало разбор ini-файла. Когда я удалял дубликаты ключей, все работало так, как ожидалось.

 Смежные вопросы

  • Нет связанных вопросов^_^