Как сделать свойство файла конфигурации уникальным с помощью анализатора конфигурации? - PullRequest
0 голосов
/ 26 мая 2020

Как я могу создать файл конфигурации с уникальным только одним уникальным свойством? Или есть какой-нибудь l oop для проверки файла конфигурации, в котором я нахожу повторяющееся значение свойства name и выдает исключение?

[NAME+TIMESTAMP]
Name=UNIQUE NAME
Property=something
Property1=something1
Property2=something2

[NAME+TIMESTAMP]
Name=UNIQUE NAME
Property=something
Property1=something1
Property2=something2

1 Ответ

0 голосов
/ 26 мая 2020

Поскольку configParser в большинстве случаев похож на dict, мы можем здесь использовать key различных блоков кода, чтобы убедиться, что есть уникальные блоки.

Вот простой тест, чтобы показать это в действии:

import configparser
class Container:
    configs=[] # keeps a list of all initialized objects.
    def __init__(self, **kwargs):
        for k,v in kwargs.items():
            self.__setattr__(k,v) # Sets each named attribute to their given value.
        Container.configs.append(self)

# Initializing some objects.
Container(
    Name="Test-Object1",
    Property1="Something",
    Property2="Something2",
    Property3="Something3",
 )
Container(
    Name="Test-Object2",
    Property1="Something",
    Property2="Something2",
    Property3="Something3",
 )
Container(
    Name="Test-Object2",
    Property1="Something Completely different",
    Property2="Something Completely different2",
    Property3="Something Completely different3",
 )
config = configparser.ConfigParser()
for item in Container.configs: # Loops through all the created objects.
    config[item.Name] = item.__dict__ # Adds all variables set on the object, using "Name" as the key.

with open("example.ini", "w") as ConfigFile:
    config.write(ConfigFile)

В приведенном выше примере я создаю три объекта, которые содержат переменные, которые должны быть установлены с помощью configparser. Однако третий объект использует переменную Name совместно со вторым объектом. Это означает, что третий "перезапишет" второй при записи файла .ini.

example.ini :

[Test-Object1]
name = Test-Object1
property1 = Something
property2 = Something2
property3 = Something3

[Test-Object2]
name = Test-Object2
property1 = Something Completely different
property2 = Something Completely different2
property3 = Something Completely different3
...