Проблема с Configobj-python и элементами списка
Я пытаюсь читать .ini
файл с ключевыми словами, содержащими отдельные элементы или элементы списка. Когда я пытаюсь напечатать строки одного элемента и значения с плавающей точкой, он печатает как h,e,l,l,o
а также 2, ., 1
соответственно, тогда как это должно было быть просто hello
а также 2.1
, Кроме того, когда я пытаюсь написать новую строку одного элемента /float/integer, появляется ,
в конце. Я новичок в Python и имею дело с configobj
, Любая помощь приветствуется, и если на этот вопрос уже был дан ответ, направьте меня к ней. Спасибо!
from configobj import ConfigObj
Читать
config = ConfigObj('para_file.ini')
para = config['Parameters']
print(", ".join(para['name']))
print(", ".join(para['type']))
print(", ".join(para['value']))
Написать
new_names = 'hello1'
para['name'] = [x.strip(' ') for x in new_names.split(",")]
new_types = '3.1'
para['type'] = [x.strip(' ') for x in new_types.split(",")]
new_values = '4'
para['value'] = [x.strip(' ') for x in new_values.split(",")]
config.write()
мой para_file.ini
выглядит так,
[Parameters]
name = hello1
type = 2.1
value = 2
1 ответ
На ваш вопрос есть две части.
Опции в ConfigObj могут быть либо строкой, либо списком строк.
[Parameters] name = hello1 # This will be a string pets = Fluffy, Spot # This will be a list with 2 items town = Bismark, ND # This will also be a list of 2 items!! alt_town = "Bismark, ND" # This will be a string opt1 = foo, # This will be a list of 1 item (note the trailing comma)
Итак, если вы хотите, чтобы что-то отображалось в виде списка в ConfigObj, вы должны убедиться, что оно содержит запятую. Список одного элемента должен иметь запятую.
В Python строки являются итеративными. Таким образом, даже если они не являются списком, их можно повторять. Это означает, что в выражении, как
print(", ".join(para['name']))
Строка
para['name']
будет повторяться, производя список['h', 'e', 'l', 'l', 'o', '1']
, который Питон покорно соединяет вместе с пробелами, создаваяh e l l o 1