Spaces:
Sleeping
Sleeping
import csv | |
def filter_csv_by_api_and_status(csv_file_name, status_code, api_name): | |
""" | |
Reads the given CSV file and prints rows where both the API and HTTP Status Code match the inputs. | |
Args: | |
csv_file_name (str): Path to the CSV file. | |
status_code (str or int): HTTP status code to filter by. | |
api_name (str): API name to filter by. | |
""" | |
with open(csv_file_name, mode='r', newline='', encoding='utf-8') as csvfile: | |
reader = csv.reader(csvfile) | |
headers = next(reader) | |
# Normalize headers to remove whitespace | |
headers = [h.strip() for h in headers] | |
api_idx = 0 | |
status_idx = 1 | |
count_index = 2 | |
found = False | |
total_count = 0 | |
for row in reader: | |
# Skip empty or malformed rows | |
if len(row) < max(api_idx, status_idx) + 1: | |
continue | |
if api_name in row[api_idx].strip() and str(row[status_idx]).strip() == str(status_code): | |
print({headers[api_idx]: row[api_idx], headers[status_idx]: row[status_idx], headers[2]: row[2] if len(row) > 2 else ''}) | |
found = True | |
total_count += int(row[count_index]) | |
if not found: | |
print('No matching rows found.') | |
print(f'Total count: {total_count}') | |
# Example usage (uncomment to test): | |
filter_csv_by_api_and_status('csv/error-data.csv', 403, 'SimpleFlow') |