finish logic

This commit is contained in:
jze9
2025-04-23 02:32:30 +05:00
commit bccbcad79f
11 changed files with 384 additions and 0 deletions

51
algam.py Normal file
View File

@@ -0,0 +1,51 @@
import os
import re
from shapely.geometry import Polygon
from algam_pars_mif import UnpackingMif
class MifData:
def __init__(self,directory,name,cad_number,additional_info,square):
self.directory:str=directory
self.name:str=name
self.cad_number:str=cad_number
self.additional_info:str=additional_info
self.square:float=square
class ReadMifDirectory():
def __init__(self):
pass
def find_mif_files(self,directory:str):
mif_files = [] # Список для хранения найденных MIF файлов
# Проходим по всем поддиректориям и файлам
for root, dirs, files in os.walk(directory):
for file in files:
# Проверяем, заканчивается ли имя файла на .mif
if file.lower().endswith('.mif'):
cad_match = re.search(r'(?:\d+[_\W]*)+\d+', file)
if cad_match:
cad_number = re.sub(r'[^\d_]', '_', cad_match.group()) # Заменяем все НЕ цифры/подчёркивания на _
cad_number = re.sub(r'_+', '_', cad_number).strip('_') # Чистим подчёркивания
# Берём текст ПОСЛЕ кадастрового номера (игнорируя разделители после него)
additional_info = file[cad_match.end():]
if cad_number.count('_') < 3:
cad_number = ""
additional_info = file
additional_info = re.sub(r'\.[^.]+$', '', additional_info) # Удаляем расширение
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(
directory=os.path.join(root, file),
name=os.path.basename(file),
cad_number=cad_number,
additional_info=additional_info,
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=}")
return mif_files