This commit is contained in:
2025-05-27 21:37:21 +05:00
parent 00527fd93d
commit ec85c40caa
5 changed files with 25 additions and 21 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -16,30 +16,33 @@ class ReadMifDirectory():
pass pass
def find_mif_files(self,directory:str): def find_mif_files(self,directory:str):
mif_files = [] # Список для хранения найденных MIF файлов mif_files = []
# Проходим по всем поддиректориям и файлам
for root, dirs, files in os.walk(directory): for root, dirs, files in os.walk(directory):
for file in files: for file in files:
# Проверяем, заканчивается ли имя файла на .mif if file.lower().endswith('.mif'):
if file.lower().endswith('.mif'): # Ищем последовательность чисел, разделённых чем угодно, в начале имени файла
cad_match = re.search(r'(\d{2,}([_\W]+)?)+\d{2,}', file)
cad_match = re.search(r'(?:\d+[_\W]*)+\d+', file)
if cad_match: if cad_match:
cad_number = re.sub(r'[^\d_]', '_', cad_match.group()) # Заменяем все НЕ цифры/подчёркивания на _ # Извлекаем только цифры из найденной последовательности
cad_number = re.sub(r'_+', '_', cad_number).strip('_') # Чистим подчёркивания numbers = re.findall(r'\d+', cad_match.group())
# Берём текст ПОСЛЕ кадастрового номера (игнорируя разделители после него) cad_number = ':'.join(numbers)
# Всё, что после кадастрового номера — это аббревиатуры и прочее
additional_info = file[cad_match.end():] additional_info = file[cad_match.end():]
if cad_number.count('_') < 3: # Удаляем расширение
cad_number = "" additional_info = re.sub(r'\.[^.]+$', '', additional_info)
additional_info = file # Чистим пробелы и спецсимволы
additional_info = re.sub(r'\s+', '_', additional_info)
additional_info = re.sub(r'^[^\wа-яА-ЯёЁ]*', '', additional_info)
additional_info = re.sub(r'\.[^.]+$', '', additional_info) # Удаляем расширение additional_info = re.sub(r'[^\wа-яА-ЯёЁ_]', '', additional_info)
additional_info = re.sub(r'\s+', '_', additional_info) # Заменяем пробелы на _ additional_info = re.sub(r'_+', '_', additional_info).strip('_')
additional_info = re.sub(r'^[^\wа-яА-ЯёЁ]*', '', additional_info) # Удаляем спецсимволы в начале else:
additional_info = re.sub(r'[^\wа-яА-ЯёЁ_]', '', additional_info) # Удаляем оставшиеся спецсимволы cad_number = ""
additional_info = re.sub(r'_+', '_', additional_info).strip('_') additional_info = re.sub(r'\.[^.]+$', '', file)
additional_info = re.sub(r'\s+', '_', additional_info)
additional_info = re.sub(r'^[^\wа-яА-ЯёЁ]*', '', additional_info)
additional_info = re.sub(r'[^\wа-яА-ЯёЁ_]', '', additional_info)
additional_info = re.sub(r'_+', '_', additional_info).strip('_')
mif_files.append(MifData( mif_files.append(MifData(
directory=os.path.join(root, file), directory=os.path.join(root, file),
name=os.path.basename(file), name=os.path.basename(file),
@@ -47,5 +50,6 @@ class ReadMifDirectory():
additional_info=additional_info, additional_info=additional_info,
square=UnpackingMif(file_directory=os.path.join(root, file)) square=UnpackingMif(file_directory=os.path.join(root, file))
)) ))
print(f"{mif_files[0].directory=}/{mif_files[0].name=}/{mif_files[0].cad_number=}/{mif_files[0].additional_info=}/{mif_files[0].square=}") if mif_files:
print(f"{mif_files[0].directory=}/{mif_files[0].name=}/{mif_files[0].cad_number=}/{mif_files[0].additional_info=}/{mif_files[0].square=}")
return mif_files return mif_files