czwartek, listopada 09, 2023

GZIP mi oddał 119 GB dysku ;-)

Gdy dziś zaczynałem dzień miałem 47 GB wolnego miejsca na dysku w firmowym Macbooku, teraz mam 166 GB ;-)

Odpaliłem mój skrypt, który tu już chyba kiedyś wrzucałem i zrobił porządki ;-)

Mam tak, że mam 1 katalog gdzie trzymam dużo danych w JSONie i lubię te dane mieć i nie chcę ich kasować, ale 1 kawałek danych to tak z 2-6 GB ;-)

No i potraktowanie tego GZIPem robi różnicę ;-)

Mój skrypt, który jakiś czas temu tu chyba wklejałem i który napisałem razem z ChatGPT wygląda tak ;-)

import os
import gzip
import concurrent.futures

def compress_file(file_path):
if not file_path.endswith('.gz'):
print(f"Compressing file {file_path}...")
with open(file_path, 'rb') as f_in:
with gzip.open(f"{file_path}.gz", 'wb') as f_out:
f_out.write(f_in.read())
os.remove(file_path)
else:
print(f"File {file_path} is already compressed in GZIP format and will not be compressed again.")

def compress_files_in_folder(path):
file_count = len([f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))])
if file_count > 500:
print(f"Compressing files in directory {path}...")
with concurrent.futures.ThreadPoolExecutor() as executor:
for filename in os.listdir(path):
file_path = os.path.join(path, filename)
executor.submit(compress_file, file_path)
else:
print(f"The number of files in directory {path} is less than 500.")

def process_folders():
root_path = os.getcwd()
with concurrent.futures.ThreadPoolExecutor() as executor:
for dirpath, dirnames, filenames in os.walk(root_path):
executor.submit(compress_files_in_folder, dirpath)

process_folders()

I działa tak, że po prostu idzie po podfolderach i jeśli jest tam więcej niż 500 plików to wszystkie z nich pakuje GZIPem... jeśli jeszcze nie są spakowane ;-)

Do tego mam bibliotekę w Pythonie do czytania danych i zamiast robić json.loads("\n".join(open(fname).readlines()) robię util.load(fname) ;-)




Podobne postybeta
GZIPem w plika z pomocą ChatGPT ;-)
Odzyskać trochę miejsca na dysku... w macOS ;-)
Jak zrobić plik OVPN (dla OpenVPN) w wersji unified format?
Żenienie Todoist z Obsidian przy pomocy Pythona ;-)
Mistral czeka na książkę

Brak komentarzy:

Prześlij komentarz