cli arguments + optimization

test
This commit is contained in:
2025-12-27 19:03:00 +03:00
parent 5cb4fa1cf8
commit 17f2f34f87
8 changed files with 65 additions and 25 deletions

View File

@@ -9,10 +9,10 @@ class BaseHandler:
def __init__(self, file_path):
self.file_path = file_path
self.dfs = self.read()
def read(self):
def read(self, skiprows=None, skipfooter=0):
try:
return pd.read_excel(self.file_path, sheet_name=None)
return pd.read_excel(self.file_path, sheet_name=None, skiprows=skiprows,skipfooter=skipfooter)
except Exception as e:
raise Exception(f"⚠️ Ошибка при чтении {self.file_path}: {e}")
@@ -23,7 +23,7 @@ class YandexHandler(BaseHandler):
def process(self):
# читаем Excel внутри объекта
#доставать дату
dfs = pd.read_excel(self.file_path, sheet_name=None, skiprows=[0, 1, 3]) #skip header
dfs = self.read(skiprows=[0,1,3])
# проверяем наличие нужных листов
if "Получено от потребителей" not in dfs or "Возвращено потребителям" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
@@ -33,7 +33,7 @@ class YandexHandler(BaseHandler):
class WBHandler(BaseHandler):
def process(self):
dfs = pd.read_excel(self.file_path, sheet_name=None)
dfs = self.read()
#доставать дату по месяцу и просто день ставить последний
if "Sheet1" not in dfs :
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
@@ -43,7 +43,7 @@ class WBHandler(BaseHandler):
class OZONHandler(BaseHandler):
def process(self):
#Доставать № документа и дату
dfs = pd.read_excel(self.file_path, sheet_name=None, skiprows=14, skipfooter=17) #skip the header and the footer
dfs = self.read(skiprows=14, skipfooter=17)
if "Отчет о реализации" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
validated_data = ozon_handler.evaluating(dfs)
@@ -52,7 +52,7 @@ class OZONHandler(BaseHandler):
class OZONPurchasesHandler(BaseHandler):
def process(self):
#доставать дату и номер документа
dfs = pd.read_excel(self.file_path, sheet_name=None, skiprows=12, skipfooter=1)
dfs = self.read(skiprows=12, skipfooter=1)
if "Отчет о выкупленных товарах" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
validated_data = ozon_purchases_handler.evaluating(dfs)
@@ -60,7 +60,7 @@ class OZONPurchasesHandler(BaseHandler):
class WBPurchasesHandler(BaseHandler):
def process(self):
dfs = pd.read_excel(self.file_path, sheet_name=None, skiprows=9, skipfooter=7)
dfs = self.read(skiprows=9, skipfooter=7)
if "Sheet1" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
validated_data = wb_purchases_handler.evaluating(dfs)
@@ -68,7 +68,7 @@ class WBPurchasesHandler(BaseHandler):
class OZONComHandler(BaseHandler):
def process(self):
dfs = pd.read_excel(self.file_path, sheet_name=None, skipfooter=1)
dfs = self.read(skipfooter=1)
if "Лист_1" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
df = dfs["Лист_1"]
@@ -81,7 +81,7 @@ class OZONComHandler(BaseHandler):
class WBComHandler(BaseHandler):
def process(self):
dfs = pd.read_excel(self.file_path, sheet_name=None, skipfooter=1)
dfs = self.read(skipfooter=1)
if "Лист_1" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
df = dfs["Лист_1"]
@@ -94,7 +94,7 @@ class WBComHandler(BaseHandler):
class YandexComHandler(BaseHandler):
def process(self):
dfs = pd.read_excel(self.file_path, sheet_name=None, skipfooter=1)
dfs = self.read(skipfooter=1)
if "Лист_1" not in dfs:
raise Exception(f"В файле {self.file_path.name} отсутствуют необходимые листы")
df = dfs["Лист_1"]