Текущий файл конфигурации выглядит следующим образом:
mainwindow.title = 'test'
mainwindow.position.x = 100
mainwindow.position.y = 200
mainwindow.button.label = 'apply'
mainwindow.button.size.x = 100
mainwindow.button.size.y = 30
logger.datarate = 100
logger.enable = True
logger.filename = './test.log'
Это читается с помощью Python во вложенный словарь:
{
'mainwindow':{
'button':{
'label': {'value':'apply'},
...
},
'logger':{
datarate: {'value': 100},
enable: {'value': True},
filename: {'value': './test.log'}
},
...
}
Есть ли лучший способ сделать это? Идея состоит в том, чтобы получить тип поведения XML и избегать XML как можно дольше. Предполагается, что конечный пользователь почти полностью неграмотен в компьютерах и в основном использует блокнот и копирование. Таким образом, стандартный тип python «header + variable» считается слишком сложным.
Фиктивный пользователь редактирует конфигурационный файл, способные программисты обрабатывают словари. Вложенный словарь выбран для простого разбиения (регистратор не нуждается или даже не может иметь / редактировать параметры главного окна).
Do what I want.
это самый сложный для компьютеров: Pmainwindow.title =='test"
Ответы:
Вы можете использовать что-то вроде YAML . Вот ссылка на пример:
http://www.yaml.org/start.html
Вы можете найти привязки Python для него в PyYAML . Это немного более удобно для пользователя, чем JSON (как выглядит ваш второй пример).
источник
>
AFTERcomments:
, а&
и*
передid001
Лучшее, что вы можете сделать, это предоставить макет вашего решения и, возможно, макет пары других решений, и спросить двух или трех типичных пользователей вашей системы. Они будут гораздо лучше рассказывать вам, что им нравится, чем сами избранные люди, которые отвечают на вопросы на этом сайте.
Это, как говорится, для "в основном компьютерных неграмотных" пользователей, я думаю, формат, который вы показываете в своем вопросе, вероятно, является лучшим форматом простого текста. Если они действительно неграмотны на компьютере, вы можете рассмотреть простой графический интерфейс, чтобы им не приходилось вручную редактировать файлы конфигурации.
источник
Потерять все, что вы можете потерять.
name.name.name=value
, каждый на отдельной строке, примерно так просто, как вы можете получить. Вам не нужны кавычки для разбора, вы знаете, когдаtrue
это логическое значение, а когдаtrue
- строка, не заставляйте «тупого человека» говорить вам об этом. Для строк, если в поле не должно быть начальных / конечных пробелов, удалите их самостоятельно.источник
Представьте себе китайца, который не знает английского и пытается прочитать ваш файл конфигурации. В качестве альтернативы представьте, что файл конфигурации написан на арабском языке (и вы не знаете арабский). Теперь спросите себя, действительно ли это читается человеком?
Даже если читатель знает английский, он все равно не знает, означает ли «logger.datarate = 100» 100 символов в секунду, или 100 ГиБ в час, или 100 кур на метрическую тонну.
Наиболее удобный для чтения формат файла - это двоичный файл с приличным диалоговым окном / мастером / конфигуратором на основе графического интерфейса пользователя (с интернационализацией, справочной системой и т. Д.).
источник
Я с Патриком Хьюзом. Создайте простое приложение для редактирования конфигураций. Сам файл конфигурации может быть немного более сложным и может содержать атрибуты, используемые редактором (отображаемое имя, текст справки, тип значения, минимальное / максимальное значение и т. Д.).
источник
Я говорю, что у вас (файл свойств) уже лучший формат для чтения человеком. :)
Вот мои аргументы:
Этот последний пункт на самом деле очень важен. Учитывая, что в настоящее время все проекты разделены на ветви, файл конфигурации может причинить массу боли при объединении ветвей. Плоский формат файла, такой как файл свойств, легче объединить, чем файл древовидной структуры.
источник