import os import re import csv import sys def convert_to_csv(input_file, output_directory): with open(input_file, 'r') as f: content = f.read() # Extracting relevant information using regular expressions task_pattern = re.compile(r'Task(\d+) => (\d+)/worst\s+(\d+)/best\s+(\d+\.\d+)/average((?:\s*,\s*missed its deadline \(absolute deadline = \d+ ; completion time = \d+\))*)') tasks = [] for match in task_pattern.finditer(content): task_num, worst, best, avg, missed_info = match.groups() missed_count = missed_info.count('missed its deadline') tasks.append((int(task_num), int(best), int(worst), float(avg), missed_count)) # Sort tasks numerically by task number tasks = sorted(tasks, key=lambda x: x[0]) # Extract filename without extension filename_without_extension = os.path.splitext(os.path.basename(input_file))[0] # Writing to CSV output_file_path = os.path.join(output_directory, f'{filename_without_extension}.csv') with open(output_file_path, 'w', newline='') as csv_file: csv_writer = csv.writer(csv_file) csv_writer.writerow(['task', 'best', 'worst', 'average', 'missed']) for task_info in tasks: task_num, best, worst, avg, missed_count = task_info csv_writer.writerow([f'Task{task_num}', int(best), int(worst), float(avg), missed_count]) if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: python script.py input_directory") sys.exit(1) input_directory = sys.argv[1] output_directory = input_directory for filename in os.listdir(input_directory): if filename.endswith(".log"): input_file_path = os.path.join(input_directory, filename) convert_to_csv(input_file_path, output_directory)