root-ext-files-unmounted-all-times.log 
Mám soubory s množstvím řádků ve formátu (první údaj je čas na prvním řádku):
22:23:14 - /opt/palemoon/updater.ini
a chci to převést na formát a redukovat na výpis jen po jedné vteřině (1 soubor na vteřinu, první řádek je logicky čas 0s): 
0:00:00 - /opt/palemoon/updater.ini 
import os
import datetime
# Vytvoření složek pro výstupy
os.makedirs("log-times", exist_ok=True)
os.makedirs("directories", exist_ok=True)
# Funkce pro výpočet rozdílu času
def time_diff(start, end):
    FMT = "%H:%M:%S"
    tdelta = datetime.datetime.strptime(end, FMT) - datetime.datetime.strptime(start, FMT)
    return str(tdelta)
# Funkce pro zpracování logů
def process_logs(input_dir):
    for log_file in os.listdir(input_dir):
        if log_file.endswith(".log"):
            with open(os.path.join(input_dir, log_file), 'r') as f:
                lines = f.readlines()
            # První čas a inicializace proměnných
            if lines:
                start_time = lines[0].split(" - ")[0]
            else:
                print(f"Soubor {log_file} je prázdný.")
                continue
            last_logged_second = None
            # Vytvoření souborů pro výstup
            output_log_path = os.path.join("log-times", log_file)
            reduced_log_path = os.path.join("directories", log_file)
            with open(output_log_path, 'w') as log_out, open(reduced_log_path, 'w') as dir_out:
                for line in lines:
                    try:
                        current_time, path = line.strip().split(" - ", 1)
                        elapsed_time = time_diff(start_time, current_time)
                        # Zapisování do logu s rozdílem času
                        log_out.write(f"{elapsed_time} - {path}\n")
                        # Zapisování pouze jednoho záznamu na vteřinu
                        current_second = current_time.split(":")[-1]
                        if current_second != last_logged_second:
                            dir_out.write(f"{elapsed_time} - {path}\n")
                            last_logged_second = current_second
                    except ValueError as e:
                        print(f"Chyba při zpracování řádku: '{line.strip()}'. Detail: {e}")
# Spuštění zpracování logů z aktuálního adresáře
process_logs(".")
print("Logy byly úspěšně zpracovány a uloženy do složek 'log-times' a 'directories'.")
 
 
 
 
Žádné komentáře:
Okomentovat