flandre/flandre/utils/archive.py
2025-04-12 23:53:05 +08:00

47 lines
1.5 KiB
Python

import json
import subprocess
from pathlib import Path
import zipfile
import zstd
TEMP_FOLDER = Path('/mnt/16T/private_dataset/New Folder/temp')
def folder_to_zip(folder: Path):
from flandre.utils.RfMeta import RfFrameMeta
for i, file in enumerate(folder.glob('*')):
file = Path(file)
print(i, file, RfFrameMeta.from_path(file).json_str)
src = file
dst = TEMP_FOLDER / f'{i}.zst'
dstj = TEMP_FOLDER / f'{i}.json'
dstj.write_text(RfFrameMeta.from_path(file).json_str)
subprocess.run(['zstd', '-f', src, '-o', dst])
subprocess.run(['zip', '-0', '-j', '-r', TEMP_FOLDER.parent / f'{folder.name}.zip', TEMP_FOLDER])
def zip_to_bytes(file: Path, name: int):
return zstd.loads(zipfile.ZipFile(file).open(f'{name}.zst').read())
if __name__ == '__main__':
# folder_to_zip(Path('/mnt/16T/private_dataset/us/R1,U=30,M=PWI,S=(256 1502)'))
# r = get(Path('/mnt/16T/private_dataset/New Folder/ST,U=60,M=FMC,S=(256 256 3002).zip'), 3)
# print(r.__len__())
# r = Path('/mnt/16T/private_dataset/New Folder/ST,U=60,M=FMC,S=(256 256 3002)/X=-204.bin').read_bytes()
# print(r.__len__())
p = Path('/mnt/16T/private_dataset/us/R1,U=30,M=PWI,S=(256 1502).zip')
# #
archive = zipfile.ZipFile(p)
for item in archive.infolist():
print(int(Path(item.filename).stem))
print()
# # imgfile = archive.open('img_01.png')
# print(archive.filelist)
# p2 = archive.open('X=20,Y=395.bin')
# print(p2.read().__len__())