Generere Python-kode fra CSV
Introduksjon
I denne oppgaven skal dere lage et Python-program, csvgen.py, som leser en CSV-fil med
beskrivelser av prosedyrer, og genererer en ferdig .py-fil med disse
funksjonene automatisk. Før du begynner, last ned de tre csv-filene test.csv, biblioteker.csv og hemmelig.csv og lagre dem i mappa for uke 6.
Format på CSV-filen
Hver linje er felter separert med ; (hvorfor ikke komma?).
Den første linjen starter med ordet biblioteker og lister eventuelle
moduler som skal importeres i den genererte filen:
biblioteker;random;math
De påfølgende linjene beskriver én funksjon hver, på formen:
navn;beskrivelse;parameter1;parameter2;...;returuttrykk
Eksempel (test.csv):
biblioteker;
pluss;legger sammen to tall;a;b;a + b
minus;trekker ett tall fra et annet;a;b;a-b
Hva programmet skal gjøre
- Åpne CSV-filen og les den linje for linje.
- Les importene fra første linje og skriv dem øverst i output-filen. I test.csv er det ingen biblioteker, så dere kan eventuelt fjerne den delen å implementere dette senere.
- For hver av de resterende linjene: del opp på
;, og generér en funksjon med riktig navn, parametere og en docstring basert på beskrivelsen. Siste felt er selve returuttrykket. - Skriv resultatet til en ny
.py-fil.
Eksempel på generert kode fra linjen over:
def pluss(a,b):
"""
legger sammen to tall
"""
return a + b
Tips
- Dere kan anta at returverdien alltid er et gyldig python-utrykk.
- Bruk
split(';')for å dele opp hver linje. - Husk at siste element i listen er returuttrykket, ikke en parameter.
- Bruk f-strenger til å bygge opp funksjonsteksten dere skriver til fil.
Utvidelser (frivillig, for de som blir ferdig tidlig)
- Formater docstrings slik at lange beskrivelser brytes over flere linjer.
- La programmet håndtere flere CSV-filer og generere én
.py-fil per CSV. - Legg til støtte for at brukeren kan skrive egen kode nederst i den genererte filen, uten at den forsvinner neste gang programmet kjøres.