|
1 | 1 | import logging
|
2 | 2 | import math
|
3 | 3 | import re
|
| 4 | +from collections import defaultdict |
4 | 5 | from datetime import datetime
|
5 | 6 | from pathlib import Path
|
6 | 7 | from typing import Literal
|
@@ -355,20 +356,15 @@ def read_metadata(
|
355 | 356 | # Force all files to be Path objects in case files is a list of strings
|
356 | 357 | files = [Path(file) for file in files]
|
357 | 358 |
|
358 |
| - # Parse the first file |
359 |
| - metadata = _parse_metadata(files[0], driver) |
360 |
| - |
361 |
| - # If there are multiple files, read the metadata from each file, then combine |
362 |
| - # Otherwise, just return the metadata from the first file |
363 |
| - if len(files) > 1: |
364 |
| - for file in files[1:]: |
365 |
| - res = _parse_metadata(file, driver) |
366 |
| - for key, value in res.items(): |
367 |
| - # If the key already exists, append the new value to the list |
368 |
| - if isinstance(metadata[key], list): |
369 |
| - metadata[key].append(value) |
370 |
| - else: |
371 |
| - metadata[key] = [metadata[key], value] |
| 359 | + # Parse metadata from each file |
| 360 | + # if a key does not exists, a list will be created |
| 361 | + metadata = defaultdict(list) |
| 362 | + for file in files: |
| 363 | + res = _parse_metadata(file, driver) |
| 364 | + for key, value in res.items(): |
| 365 | + metadata[key].append(value) |
| 366 | + |
| 367 | + # Regulate metadata for all files |
372 | 368 | metadata = _regulate_metadata(metadata, driver)
|
373 | 369 |
|
374 | 370 | return metadata
|
|
0 commit comments