55 lines
3.0 KiB
Python
55 lines
3.0 KiB
Python
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 = []
|
||
for root, dirs, files in os.walk(directory):
|
||
for file in files:
|
||
if file.lower().endswith('.mif'):
|
||
# Ищем последовательность чисел, разделённых чем угодно, в начале имени файла
|
||
cad_match = re.search(r'(\d{2,}([_\W]+)?)+\d{2,}', file)
|
||
if cad_match:
|
||
# Извлекаем только цифры из найденной последовательности
|
||
numbers = re.findall(r'\d+', cad_match.group())
|
||
cad_number = ':'.join(numbers)
|
||
# Всё, что после кадастрового номера — это аббревиатуры и прочее
|
||
additional_info = file[cad_match.end():]
|
||
# Удаляем расширение
|
||
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('_')
|
||
else:
|
||
cad_number = ""
|
||
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(
|
||
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))
|
||
))
|
||
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 |