Checking for valid and invalid csv headers

This commit is contained in:
Candifloss 2025-02-11 13:57:00 +05:30
parent 20d0f163e6
commit 6eebd6a095

View File

@ -7,9 +7,16 @@ def get_csv_data(file):
reader = csv.DictReader(csv_file, delimiter='|') reader = csv.DictReader(csv_file, delimiter='|')
# Validate CSV headers based on config # Validate CSV headers based on config
required_headers = set(item_attributes.keys()) required_headers = set(item_attributes.keys()) # Get required headers as per configuration
csv_headers = set(reader.fieldnames) # Get headers present in the csv file
# Check if the required headers exist
if not required_headers.issubset(reader.fieldnames): if not required_headers.issubset(reader.fieldnames):
raise ValueError(f"CSV file must include headers: {', '.join(required_headers)}.") raise ValueError(f"CSV file must include headers: {', '.join(required_headers)}.")
# Check for invalid headers
if extra_headers := csv_headers - valid_headers:
raise ValueError(f"Unexpected headers found: {', '.join(extra_headers)}")
# Extract data dynamically based on config # Extract data dynamically based on config
return [{attrib: row[attrib] for attrib in item_attributes} for row in reader] return [{attrib: row[attrib] for attrib in item_attributes} for row in reader]