Förenkling av loggfil med Python
I fps-trainern Kovaak skapas det en logg i .csv-format för varje utmaning man spelar, där det går att se träffsäkerhet, skada, poäng m.m. Den registrerar dock väldigt mycket information, vilket gör att om man importerar datan till excel för att plotta endast träffsäkerhet och poäng, så är det svårt att välja ut rätt data.
Målet: plocka ut endast de värden jag behöver från varje fil, där varje fil hamnar på en ny rad i en separat textfil som matchar utmaningens namn. På så sätt kan jag importera en textfil som innehåller endast den informationen jag är intresserad av.
Den data jag är intresserad av är
Namn, datum och tid finns i filens titel, medans skott, träffar och poäng finns inuti filen.
Python var relativt lätt att lära sig, särskilt om man redan har lite koll på andra programmeringsspråk. Man behövde inte deklarera variabler innan de användes, programmet valde automatiskt rätt typ av variabel, t.ex int/string, och loopar var väldigt lättskapade.
Många finesser fanns redan inbyggda, och behövdes någonting extra så var det lätt att importera som en färdig modul. För mitt program använde jag os, re och datetime.
os - används för att manipulera filsökvägar. Kan användas för att skapa nya eller ta bort mappar/filer, eller lista filer i en mapp. Detta använde jag för att lista alla filer i min logg-mapp och matcha mot Utmanings-namn.
re - regular expressions. Används för att skapa ett mönster för att matcha en sträng med en annan. Mycket användbart om man
vill hitta t.ex ett datum på formen YYYY-MM-DD, men inte vill specifiera ett exakt datum, utan inkludera allt, så länge det har rätt form.
Då kan man använda mönstret [0-9]{4}-[0-9]{2}-[0-9]{2}
. Detta matchar ett fyrsiffrigt tal, bindestreck, ett tvåsiffrigt tal, bindestreck, ett tvåsiffrigt tal.
Användes i mitt fall till att hitta datum och tid, samt lokalisera rätt rader att extrahera i filen.
datetime - kan användas för att göra om en sträng till ett "datumobjekt". Modulen tar ett datum/tid som input, samt en förklaring av vad som är vad i inputen, och gör om det till ett datumobjekt, som i sin tur kan manipuleras till att visa datum och tid i den ordning man tycker passar. Jag använde detta till att göra om datum och tid i filnamnet till ett format som google sheets kunde acceptera som ett datum/tid format. (YYYY.MM.DD gjordes om till DD/MM/YYYY)
Sedan sattes allt ihop till ett antar loopar som gick igenom varje fil i mappen en efter en, och plockade ut de olika värdena, dels från filnamnet, dels från texten i filen. Det krävdes lite pyssel för att matcha till rätt värde i filen, men till slut så gick det att få ihop till ett fungerande program.
Så här såg det ut när det hade körts och filerna skapats.