import csv import os from tkinter import Tk, filedialog def merge_csv_files(input_files, output_file): file_contents = {} header = ['First Column'] # Read all selected CSV files for filepath in input_files: filename = os.path.basename(filepath) with open(filepath, 'r') as file: csv_reader = csv.reader(file) next(csv_reader) # Skip the header row for row in csv_reader: try: value = float(row[0]) if 300 <= value <= 700: # Check if the value is within the range if row[0] not in file_contents: file_contents[row[0]] = {} file_contents[row[0]][filename] = row[1] if filename not in header: header.append(filename) except ValueError: pass # Write the merged contents into the output file with open(output_file, 'w', newline='') as file: csv_writer = csv.writer(file) csv_writer.writerow(header) for key, values in file_contents.items(): row = [key] for filename in header[1:]: row.append(values.get(filename, '')) csv_writer.writerow(row) print(f'Merged CSV files saved to: {output_file}') def extract_data_from_merged_file(merged_file): data = [] with open(merged_file, 'r') as file: csv_reader = csv.reader(file) header = next(csv_reader) # Get the header row for i, row in enumerate(csv_reader, start=1): if i in (365, 750): extracted_row = [] for j, value in enumerate(row[1:], start=1): column_name = header[j] extracted_row.append((column_name, value)) data.append(extracted_row) return data if __name__ == "__main__": # Create a file dialog to select multiple CSV files root = Tk() root.withdraw() input_files = filedialog.askopenfilenames(title='Select CSV files', filetypes=(('CSV files', '*.csv'),)) # Ensure at least one file is selected if input_files: # Specify the output file path output_file = 'merged.csv' merge_csv_files(input_files, output_file) extracted_data = extract_data_from_merged_file(output_file) for row in extracted_data: print(row) else: print('No files selected. Program will exit.')