45 lines
1011 B
Python
45 lines
1011 B
Python
import subprocess
|
|
import itertools
|
|
import io
|
|
import csv
|
|
|
|
database = {}
|
|
|
|
|
|
def extract_to_csv(base):
|
|
subprocess.run(["libreoffice", "--convert-to", "csv", f"{base}.ods"])
|
|
|
|
|
|
def debut_plage(line):
|
|
return not line.strip().startswith("DEBUT_PLAGE")
|
|
|
|
|
|
def get_lines(base):
|
|
with open(f"{base}.csv") as f:
|
|
csv_content = [l for l in f.readlines()]
|
|
return csv_content
|
|
|
|
|
|
def filter_interesting(lines_in):
|
|
data = itertools.dropwhile(debut_plage, lines_in)
|
|
lines = itertools.islice(data, 1, None)
|
|
return lines
|
|
|
|
|
|
def convertir_en_dictionnaires(lines):
|
|
with io.StringIO() as fake_stream:
|
|
fake_stream.writelines(lines)
|
|
fake_stream.seek(0)
|
|
reader = csv.DictReader(fake_stream)
|
|
rows = list(reader)
|
|
return rows
|
|
|
|
|
|
extract_to_csv("montableur")
|
|
contenu = get_lines("montableur")
|
|
meslignes = list(filter_interesting(contenu))
|
|
mes_donnees = convertir_en_dictionnaires(meslignes)
|
|
|
|
for echantillon in mes_donnees:
|
|
database[echantillon["Nom"]] = echantillon
|