Генерация файла конфигурации в Python

Я ищу способ сгенерировать некоторые файлы конфигурации для игры stellaris в python .

Моя цель — написать файл Python для каждого сгенерированного файла конфигурации Stellaris, загрузить файл Python, выполнить в нем скрипт и поместить вывод в тот же каталог в зависимости от имени файла Python.

Так что для файла "common/ship_sizes/00_ship_sizes.txt" я бы просто создал файл "common/ship_sizes/00_ship_sizes.txt.py", тогда система найдет этот файл, откроет его, запустит в нем скрипт ( опционально с некоторой преамбулой, например, "позвонить gen_output", или нет, мне все равно), и поместите вывод кода Python в "common/ship_sizes/00_ship_sizes.txt".

Цель состоит в том, чтобы иметь возможность кодировать генерацию файлов конфигурации, а не писать их самостоятельно.

Я определенно могу сделать это вручную, пройдясь по дереву каталогов, открыв файлы Python, запустив скрипт, перенаправив вывод на основе имени файла и т. д. Я надеюсь, что для этого есть более питонический способ.

Пример того, что я хочу создать:

      ship_section_template = {
    key = "BATTLESHIP2_BOW_L1M1S2"
    ship_size = battleship2
    fits_on_slot = bow
    should_draw_components = yes
    entity = "battleship_bow_L1M1S2_entity"
    icon = "GFX_ship_part_core_bow"
    icon_frame = 1

    component_slot = {
        name = "LARGE_GUN_01"
        template = "large_turret2"
        locatorname = "large_gun_01"
    }
    component_slot = {
        name = "MEDIUM_GUN_01"
        template = "medium_turret2"
        locatorname = "medium_gun_01"
    }

    component_slot = {
        name = "SMALL_GUN_01"
        template = "small_turret2"
        locatorname = "small_gun_01"
    }

    component_slot = {
        name = "SMALL_GUN_02"
        template = "small_turret2"
        locatorname = "small_gun_02"
    }

    large_utility_slots = 3

    resources = {
        category = ship_sections
        cost = {
            alloys = @section_cost
        }
    }
}

как видите, это действительно скучный шаблон; во многих случаях простые модификации требуют обширной перезаписи многих файлов, а файл конфигурации не позволяет вам выполнять математические операции в большинстве файлов, а это означает, что мне приходится генерировать константы со всей моей математикой, предварительно рассчитанной, что делает настройку реальной болью .

Но, честно говоря, фактический формат каждого из них не имеет большого значения, я могу легко написать код из словаря в этот. Моя проблема заключается в чистой «системе» для создания многих из этих файлов.

Есть ли способ использовать систему пакетов python для этого? Т.е. автоматически загружать все пакеты в наборе подкаталогов без повторного их перечисления или что-то подобное? Я имею в виду, я не хочу переписывать make.

1 ответ

Пожалуйста, обратитесь к модулю парсера конфигурации из документации python.

  1. https://docs.python.org/3/library/configparser.html
  2. https://docs.python.org/3/distutils/setupscript.html#

Вы можете указать другие форматы файлов в разделе «Форматы файлов» по ​​ссылке. https://docs.python.org/3/library/index.html

Другие темы, касающиеся конфигурации:

  1. Куда поместить файл конфигурации в Python?
  2. https://towardsdatascience.com/from-novice-to-expert-how-to-write-a-configuration-file-in-python-273e171a8eb3
Другие вопросы по тегам