Я пытаюсь найти способ наилучшей обработки файлов с несколькими путями, которые очень похожи друг на друга. Хотя мой код работает, я чувствую, что он громоздок, сложен в обслуживании и труден для масштабирования без большого количества ручной работы (например, предположим, мне нужно продолжать добавлять все больше и больше путей, которые немного отличаются.
В идеале, я хотел бы как можно больше применять принцип СУХОЙ и не иметь повсеместных утверждений if-else, если есть лучшее решение.
Я подумал, что использование словарей или классов может быть некоторым улучшением, но было неудобно также хранить пути в словаре. Я не так опытен с классами, поэтому я не смог заставить его работать без тонны обходных путей (я не думаю, что я правильно строил класс)
Код
def save_df(df, banner, year, month):
base_path = r'common\path\{0}\for\all\banners\{1}'.format(banner.upper(), year)
if banner in ('a', 'b'):
if month < 10:
# The zero is so I can have the file month in '01, 02, etc.' format
default_path = os.path.join(base_path, '{0}-0{1}_TEST'.format(year, month))
else:
default_path = os.path.join(base_path, '{0}-{1}_TEST'.format(year, month))
else:
if month < 10:
default_path = os.path.join(base_path, '{0}_{1}-0{2}_TEST'.format(banner.upper(), year, month))
else:
default_path = os.path.join(base_path, '{0}_{1}-{2}_TEST'.format(banner.upper(), year, month))
saved_output = [df, default_path]
return saved_output
Нет проблем для пути, работает как задумано. Я считаю, что код может быть улучшен путем рефакторинга, однако я не уверен, что лучше всего работать с условиями, которые очень похожи без повторения.