У меня есть пара модулей Python, например:
prepare_data.py
process_data.py
generate_report.py
Я беру файл Excel, обрабатываю его и затем создаю отчет в формате .pdf. Это очень линейное процедурное программирование. В основном модуле caller.py
я вызываю функции одну за другой:
prepare_data.do1()
prepare_data.do2()
generate_report.do3()
и т.п.
У меня также есть модуль Configuration.py
, в котором я храню глобальные переменные и настройки, импортированные в prepare_data.py
, process_data.py
и generate_report.py
.
Однако во время выполнения я создаю несколько промежуточных файлов в той же папке, где хранится файл Excel. В Configuration.py
очень удобно иметь несколько переменных, которые создаются на основе расположения исходного файла Excel:
excel_file = r"C:\Data\InData.xlsx"
scratch_folder = os.path.dirname(excel_file)
out_pdf = os.path.join(scratch_folder,'PdfReport.pdf')
#scratch_folder is C:\Data
Затем в модулях, которые фактически выполняют работу, я хотел бы импортировать Configuration.py
, а затем использовать переменные из этого модуля:
...
import Configuration as cfg
create_pdf(cfg.out_pdf)
...
Однако, поскольку я вызываю caller.py
и предоставляю в качестве аргумента путь к файлу Excel, я не могу сохранить путь к файлу Excel в Configuration.py
.
Если я использую такие решения, как ConfigParser
или просто обычный файл .conf
, если я правильно понимаю, я не могу воспользоваться из os.path.join()
и других функций Python для построения путей.
Что было бы эффективным способом организации конфигураций в моем конкретном случае?