Date Tags python

Продолжаю (после перерыва) заметки для себя. Сейчас немного из области изучения python.

Словари в python видятся мне как очень удобный инструмент для ведения конфигурационных файлов (любого вида, любой вложенности). Например, такого типа:

Confg = {'num': 1,
         'text': 'there is a text',
         'list': [1, 2, (2, 3)],
         'dict': {'d1': 123, 'd2': 'werwe'}}

Допустим, что такие файлы расположены в некоторой папке (т.е. в папке может быть нескольео питоновских файлов, и в каждом файле несколько конфигурационных объектов, предположительно словарей, но, в принципе, любых). Нужно собрать их вместе в один словарь.

Покопавшись в доках (получилось поработать со стандратной документацией благодаря ограниченному доступу к Интернету) понял, что нужно использовать функцию import_module из модуля importlib. Предварительно нужно добавить папку в пути поиска инструкции import (список sys.path)

Если учесть возможность использования генераторов, получается такой довольно компактный "питонистичный" код:

from os import listdir
from os.path import isdir
from sys import path as sp
from importlib import import_module as im


def _main():
    # Берём некую папку (с проверкой существования)
    PApp = r'/home/dsm/prg/python/set_proxy/app_cfg'
    if not isdir(PApp): return {}

    # Получаем список py файлов в папке PApp,
    # и если не найдено выходим,
    # если найдено - добавляем в пути поискa и импортируем
    apps = [f for f in listdir(PApp) if f.endswith('.py')]
    if not apps: return {}
    sp.append(PApp)
    g = {m.__name__:
         {o: m.__getattribute__(o) for o in dir(m) if not o.startswith('_')}
         for m in [im(a[:-3]) for a in apps]}
    return g


if __name__ == "__main__":
    d = _main()
    if d:
        for (m, a) in d.items(): print('{0} => {1}'.format(m, a))
    else:
        print('not found')