osaisiko joku tehdä yksinkertaisen scriptin, joka poistaa txt tiedostosta kaikki rivit jotka eivät sisällä esim. lukua 12345
grep -v 12345 <alkup.txt >valmis.txt
py koodiin siis pelkkä: grep -v "12345" ?
ja sitten suoritus python.exe koodi.py alkup.txt >valmis.txt
Ei siihen mitään pythonia tarvi. Suoraan shellissä/komentorivillä ajetaan.
toimiiko toi windowsilla?
Ei toimi, jos ei ole grep-ohjelmaa.
Pythonilla:
open("valmis.txt", "w").writelines([s for s in open("alkup.txt", "r").readlines() if "12345" in s])
Muokkaus: not in -> in
Metabolixin koodi toimii mainiosti kaikilla muilla paitsi erittäin suurilla tiedostoilla. Niillä ongelmaksi voi muodostua muistinkulutus, koska tuossa []-osassa rakennetaan muistiin lista kaikista tiedoston säilytettävistä riveistä, ja vasta sitten aletaan kirjoittaa niitä kohdetiedostoon.
On parempi hyödyntää Pythonin iterointia, jonka avulla tiedostoa luetaan pätkittäin eteenpäin ja kirjoitetaan samalla.
open("valmis.txt", "w").writelines(s for s in open("alkup.txt") if "12345" in s)
Tuossa writelines "imee" argumenttina annetusta generaattorilausekkeella määritellystä iteraattorista rivejä lisää sitä mukaa kun kirjoittaa niitä levylle. Hakusanat lisätietoa varten: list comprehension, generator expression.
Muokkaus: not in -> in
kiitos, mutta piti siit poistaa muut kuin se tietyn tekstin sisältävä 12345.
tuo metabolixin script poisti ne jotka sisälsi sen
rica kirjoitti:
kiitos, mutta piti siit poistaa muut kuin se tietyn tekstin sisältävä 12345.
tuo metabolixin script poisti ne jotka sisälsi sen
Näinhän se olikin, korjasin koodin edelliseen viestiini. Yksi not pois.
Aihe on jo aika vanha, joten et voi enää vastata siihen.