Добавлена валидация в CsvManager, а так же новые зависимости

Библиотеку progress забыл добавить в прошлый раз, а библиотека cerberus добавлена для валидации
This commit is contained in:
Ilia Miheev
2025-09-30 19:32:46 +03:00
parent 88c43eb58f
commit eaa0feca68
2 changed files with 28 additions and 0 deletions
+28
View File
@@ -1,5 +1,6 @@
import csv import csv
from pprint import pprint from pprint import pprint
from cerberus import Validator
class CsvManager: class CsvManager:
'''Класс для работы с csv файлами во время парсинга''' '''Класс для работы с csv файлами во время парсинга'''
@@ -10,6 +11,15 @@ class CsvManager:
newline: новая строка в csv файле newline: новая строка в csv файле
encoding: кодировка открываемого файла encoding: кодировка открываемого файла
delimiter: разделитель данных в csv файле''' delimiter: разделитель данных в csv файле'''
schema = {
'newline': {'type': 'string'},
'encoding': {'type': 'string'},
'delimiter': {'type': 'string'},
}
v = Validator(schema)
if not v.validate({'newline': newline, 'encoding': encoding, 'delimiter': delimiter}):
raise ValueError(f'Ошибка: {v.errors}')
self.newline = newline self.newline = newline
self.encoding = encoding self.encoding = encoding
self.delimiter = delimiter self.delimiter = delimiter
@@ -26,6 +36,15 @@ class CsvManager:
filePath: путь до csv файла filePath: путь до csv файла
mode (w/a): метод открытия файла mode (w/a): метод открытия файла
row: список записываемых данных''' row: список записываемых данных'''
schema = {
'filePath': {'type': 'string'},
'mode': {'type': 'string', 'allowed': ['w', 'a'] },
'row': {'type': 'list'},
}
v = Validator(schema)
if not v.validate({'filePath': filePath, 'mode':mode, 'row':row}):
raise ValueError(f'Ошибка: {v.errors}')
with open(filePath, mode=mode, newline=self.newline, encoding=self.encoding) as file: with open(filePath, mode=mode, newline=self.newline, encoding=self.encoding) as file:
writer = csv.writer(file, delimiter=self.delimiter) writer = csv.writer(file, delimiter=self.delimiter)
writer.writerow(row) writer.writerow(row)
@@ -36,6 +55,15 @@ class CsvManager:
filePath: путь до csv файла filePath: путь до csv файла
mode (w/a): метод открытия файла mode (w/a): метод открытия файла
row: список записываемых данных''' row: список записываемых данных'''
schema = {
'filePath': {'type': 'string'},
'mode': {'type': 'string', 'allowed': ['w', 'a'] },
'row': {'type': 'list'},
}
v = Validator(schema)
if not v.validate({'filePath': filePath, 'mode':mode, 'row':row}):
raise ValueError(f'Ошибка: {v.errors}')
with open(filePath, mode=mode, newline=self.newline, encoding=self.encoding) as file: with open(filePath, mode=mode, newline=self.newline, encoding=self.encoding) as file:
writer = csv.writer(file, delimiter=self.delimiter) writer = csv.writer(file, delimiter=self.delimiter)
writer.writerows(row) writer.writerows(row)
BIN
View File
Binary file not shown.