Ga naar inhoud


Tekst(data)file met python klein houden, hoe doe je dat?


Con

Aanbevolen berichten

Ik lees sinds een jaar mijn slimme meter uit.

De gegevens sla ik op in een tekstfile, komma gescheiden.

(voorheen gebruikte ik RRD-tools maar is me niet bevallen)

 

Deze file groeit echter (uiteraard) per uitlezing en die

wil ik graag automatisch met een script klein houden.

 

Bij één txtfile heb ik alleen maar de laatste 10 regels

aan data nodig. Bij een ander de onderste 30 regels.

 

Nu doe ik het handmatig, één keer in de maand download

ik de txtfile (2Mb) en delete alles behalve de onderste

10 regels.

 

Wie weet hier een python procedure (scriptje) voor?

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites


gewoon Linux kan je het 'tail' commando gebruiken en die laatse x regels naar een tijdelijk bestandje of terminal schrijven.

 

Voor python zal ik wat langer moeten denken...

 

dus, eigenlijk zou je de rest van beide files gewoon weg willen hebben; behalve dan die 10 of 30 regels?

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Ik zou dit ook niet op de moeilijke manier (python) doen maar gewoon tail -n 10 <input bestandsnaam> > <output bestandsnaam> doen. Is gewoon 1 Linux commando.

Dit gaat volgens mij de goede kant op...

Ik heb een script wat data uitleest en wegschrijft naar een tekstfile.

Kun je dan de naam van die tekstfile blijven gebruiken of moet je eerst

de bestaande file hernoemen?

 

Het zou op zich een openbaring zijn, laatst was de file 21Mb en dat vreet natuurlijk.

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Of eens kijken of je met een database kunt gaan werken. Tekst bestanden lijken me niet het meest geschikte formaat

  • Resistance is futile you will be assimilated
  • Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790)
  • Mijn vrijheid eindigt niet waar jouw angst begint!

 

 

Link naar reactie
Delen op andere sites

Ik heb een tekstbestand nodig als voeding voor gnuplot

(programma voor het maken van grafieken) en ik ben al

lang blij dat het allemaal werkt (voor mijn leeftijd :grin: )

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Ik zou dit ook niet op de moeilijke manier (python) doen maar gewoon tail -n 10 <input bestandsnaam> > <output bestandsnaam> doen. Is gewoon 1 Linux commando.

Alle gegevens pleitte....  :cry:

 

Dat was um niet.

tail -n 10 <input bestandsnaam> > <output bestandsnaam>

Daar krijg je een leeg bestand van, je moet blijkbaar een tussenmedium kiezen

want tail -n 10 <input bestandsnaam> > <output andere bestandsnaam> werkt wél

en je behoudt je gegevens. Dan daarna wellicht het bestaande bestand overschrijven

met het temp-bestand.

 

ook nog ff geprobeerd en dat gaat voortreffelijk.

 

Dus eerst selecteren en wegschrijven naar nieuw temp bestand en daarna

kopiëren naar bestaand bestand.

 

Heren, bedankt weer, ik dank dat dat wel in een Python-scriptje past.

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Als ik het goed begrijp wil je de x regels toevoegen aan een bestaand bestand. Dat doe je met hetzelfde tail commando, en wel zo:

 

tail -n 10 inputfile >> outputfile

 

Zo plak je het erachter ipv overschrijven.

Nee, het bestaande bestand groeit, zeg tot 5000 regels terwijl ik

altijd alleen maar de laatste 31 (bij een maand)regels nodig heb.

 

Bij een ander bestand (bij 2 minuten uitlezing (iedere 10 seconden)) 20 regels.

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Dan nog steeds denk ik dat een database wel een aardig idee is. Je houdt dan historie die je met andere tools kunt benaderen. En voor GNUPlot maak je dan een scriptje die de laatste 31 records voor jou uit de database vist.

 

Als IT'er herken ik dit soort problemen. Wat je dan later kunt doen is je data comprimeren. Dan reken je bijvoorbeeld al je metingen van de afgelopen week om naar uren. Dan krijg je uur cijfers. En voor oudere gegevens reken je dan de uurcijfers om naar dagcijfers. En voor nog oudere gegevens naar week cijfers. Etc.

  • Resistance is futile you will be assimilated
  • Those who would give up essential liberty, to purchase a little temporary safety, deserve neither liberty nor safety. Benjamin Franklin (1706-1790)
  • Mijn vrijheid eindigt niet waar jouw angst begint!

 

 

Link naar reactie
Delen op andere sites

dus, file eerst moven (renamen); dan tail van laatste 20 naar oude naam...

mv filename.txt filename.txt.old | tail -20 filename.txt.old filename.txt
mv filename2.txt filename2.txt.old | tail -31 filename2.txt.old filename2.txt





Je kan de '.old' eventueel vervangen door een variabele op basis van de datum waarop dit script zou lopen...

En dan de oude file met gzip zippen om schijfruimte te sparen.

 

 

De meest 'propere' oplossing is om met RRD of MySQL te gaan spelen; langs andere kant kan je je de vraag stellen of het wel nodig is om een db aan te maken indien je de historiek relatief beperkt wil houden. Indien je 2014 wil vergelijken met 2013/2012; dan kan het inderdaad wel van pas komen.

 

 

Maar goed, alles staat of valt met wat je wil bereiken.

 

**edit**

typo in spelen; die verrekte auto correct maakte er 'spleen' van

 

**edit2**

voorbeeld voor 31 dagen ook toegevoegd

aangepast door De_Perre

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Denk dat ik me vergist heb, en dat er een ';' tussen beide commando's moest staan en niet het pipe symbool '|'.

Er wordt immers geen output doorgegeven.

 

Dus:

 

 

mv filename.txt filename.txt.old ; tail -20 filename.txt.old filename.txt 
mv filename2.txt filename2.txt.old ; tail -31 filename2.txt.old filename2.txt

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

Ik heb er inmiddels al positieve ervaringen mee, ga het in mijn pythonscript integreren.

 

Voorts betreft het hier momentane waarde dus er geldt geen houdbaarheidsdatum.

 

Ik ben wél voornemens om ook over historisch materiaal te gaan beschikken maar

de wereld van databases is voor mij een volstrekt onbekende wereld.

 

RRD-tools was inderaad een mooie database, deze groeide nooit, eenmaal vastgelegd

en tot in de eeuwigheid bleef de grootte gestand. Ik vond echter de grafieken niet mooi

en ben over gegaan naar gnuplot. Daar kun je eenvoudig met txt en csv bestanden

werken en dat snap ik nog net... mijn leeftijd hè, gaat een beetje een rol spelen.  :grin:

 

En ik heb al zoveel moeten leren de laatste tijd. Een beetje Linux, Python, RRD-tools

(een beetje voor niets weliswaar) gnuplot, het gebruik van cronjobs enz.

Ook weer een nieuwe uitdaging om direct mijn inverter uit te lezen, kortom, handen vol.

 

Dus het moet bij mij een beetje langzaam opgebouwd worden.

 

Maar in ieder geval weer bedankt voor de input van iedereen. En die databases . . . ik

wordt wel steeds nieuwsgieriger...

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Con, als je al met RRD gespeeld hebt, heb je dan nooit 'cacti' gevonden?

Dit is een graphing tool voor RRD; dus mogelijk had je hier mee aan de slag moeten gaan.

 

Dat van dat langzaam opbouwen ben ik ook vertrouwd mee.

 

Veel success en plezier nog. Mocht je nog iets willen weten, ben je hier wel op de juiste plaats lijkt me :)

[Vu+ Solo4K] - [VTi 13.x]

[TVV Basic+] - [CD TopHD]
Ik vind het nieuwe overzicht met ongelezen topics in een tijdslijn maar niks...

Link naar reactie
Delen op andere sites

@De_Perre

 

Ik zij RRD-tools maar bedoelde icm met cacti.

Daar vond ik de grafieken niet mooi voldoende.

 

En de db van RRD-tools voor een ander grafisch

programma als gnuplot was erg lastig in te zetten.

 

Zoals je in onderstaand grafiek kunt zien zijn dit

wel hele fraaie plaatjes...

post-36489-0-83554200-1410243475_thumb.png

aangepast door Con

Groet, Con. Gloeiende, gloeiende, een beetje humor moet kunnen, anders ga je maar ergens anders heen..
Sinds maart 2021 glasvezel via KPN.

Internet/PC: modem/router Fritzbox en TP-Link accesspoint, switch (8), switch (4)

Intel Nuc i7 met W10, Gigabyte Brix met Home Assistant, 17 Shelly's en 2 ESP-tjes.

Link naar reactie
Delen op andere sites

Maak een account aan of log in om te reageren

Je moet een lid zijn om een reactie te kunnen achterlaten

Account aanmaken

Registreer voor een nieuwe account in onze community. Het is erg gemakkelijk!

Registreer een nieuwe account

Inloggen

Heb je reeds een account? Log hier in.

Nu inloggen
×
×
  • Nieuwe aanmaken...