[e988c2]: / tests / lib / file_utils.py

Download this file

21 lines (16 with data), 599 Bytes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import csv
import gzip
from pyarrow.feather import read_table
from ehrql.file_formats import get_file_extension
def read_file_as_dicts(filename):
extension = get_file_extension(filename)
if extension == ".csv":
with open(filename, newline="") as f:
return list(csv.DictReader(f))
elif extension == ".csv.gz":
with gzip.open(filename, "rt", newline="") as f:
return list(csv.DictReader(f))
elif extension == ".arrow":
return read_table(str(filename)).to_pylist()
else:
assert False, f"Unsupported extension: {filename}"