70 lines
1.5 KiB
Python
70 lines
1.5 KiB
Python
|
|
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()
|