flandre/src/utils/RfFile.py

70 lines
1.5 KiB
Python
Raw Normal View History

2025-01-06 11:21:04 +08:00
from pathlib import Path
from attr import dataclass
@dataclass
class RfFolder:
parent: Path
D: str
L: int = 30
C: str = 'PAR'
@staticmethod
def from_path(p: Path | str) -> 'RfFolder':
p = Path(p)
D, L, C = p.name.split(',')
L = int(L.replace('L=', ''))
C = C.replace('C=', '')
return RfFolder(p.parent, D, L, C)
@property
def name(self):
return f'{self.D},L={self.L},C={self.C}'
@property
def path(self):
return self.parent / self.name
@property
def all(self):
return [RfFile.from_path(f) for f in self.path.glob('*.bin')]
@dataclass
class RfFile:
folder: RfFolder
X: int = None
Y: int = None
Z: int = None
S: int = None
E: int = None
@staticmethod
def from_path(p: Path | str) -> 'RfFile':
p = Path(p)
folder = RfFolder.from_path(p.parent)
return RfFile(folder, **{(c := pair.split('='))[0]: int(c[1]) for pair in p.stem.split(',')})
@property
def path(self):
arr = []
d = self.__dict__.copy()
# print(d)
d.__delitem__('folder')
for k in d:
if d[k] is not None:
arr.append(f'{k}={d[k]}')
filename = ','.join(arr) + '.bin'
# print(filename)
return self.folder.path / filename
def test2():
r = RfFile.from_path('/run/media/lambda/b86dccdc-f134-464b-a310-6575ee9ae85c/cap4/TEST1,L=30,C=PAR/S=925,E=4.bin')
print(r)
if __name__ == '__main__':
test2()