Files
kadastr11/algam.py
2025-04-23 02:32:30 +05:00

51 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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