[python-nl] zoeken binnen file.
Johan Hendriks
joh.hendriks at gmail.com
Fri Apr 25 16:28:15 CEST 2014
Goedemiddag allemaal.
Ik heb twee vraagjes.
Ik ben na vele jaren afhoudend te zijn geweest met scripten toch maar
eens begonnen.
Na lang twijfelen heb ik dan gekozen om alles wat ik wil scripten in
python te gaan doen.
Nu heb ik mijzelf een projectje opgelegd, maar al gauw loop ik tegen het
een en ander aan.
Ik heb een bestand waar 1 tot 10 getallen in staan, dit ziet er zo uit.
200
100
80
45
46
Nu wil ik deze getallen opzoeken in files die in een directory staan.
Deze bestanden bevatten allemaal één regel met BoxID="xx" waar xx dus
het getal is wat ik wil opzoeken. Eenmaal gevonden dan wil ik het
bestand geheel wegschrijven als getal.datum.xml
Wat mij nu niet lukt is om een string of variabele aan te maken en deze
te loopen door de bestanden.
Mijn gedachte was om het bestand te lezen, dan de zoekstring aan te
maken en dan door de bestanden te gaan en deze eruit zoeken.
Ik heb nu het volgende.
#!/usr/bin/env python
import os, string
# get box ID's to work with
with open("/root/scripts/boxid","r") as f:
content = f.read()
truck = content.split()
print '\n'.join(boxid)
Dit geeft mij het volgende op het scherm.
200
100
80
45
46
Dus het inlezen van het bestand gaat goed, en ik heb dus als ik het goed
begrijp een list met 5 waardes.
# get number of boxid's
number = len(boxid)
print (number)
Dit gaat ook goed, hij geeft netjes het getal 5.
Maar nu wil ik dus zoeken op BoxID="200", BoxID="100", BoxID="80",
BoxID="45" en BoxID="46"
#Create search strings!
#searchstring = ('BoxID="46"')
searchstring = "BoxID=\"boxid[3]\""
print searchstring
Hier gaat het mis.
De output van print search string is BoxID="boxid[3]"
Ik krijg het niet voor elkaar om daar BoxID="200" van te maken.
Als ik searchstring set op ('BoxID="46"') en dan verder ga met het
script, dan vind hij de bestanden waar deze regel in voor komt. en print
deze ook netjes op het scherm.
# read the XML files
path = "/usr/local/samba/data/XML"
for fname in os.listdir(path):
# print fname # dit werkt, en ik krijg alle bestanden te zien.
document = os.path.join(path, fname)
for line in open(document):
# print document # dit werkt ook, en dan zien ik alle bestanden
met het gehele pad
if searchstring in line:
print fname
Hoe kan ik de searchstring zo krijgen dat hij alle bestanden afloopt op
zoek naar BoxID=" < alle getallen uit het bestand > "
Het zal de leeftijd wel zijn, maar ben hier nu al een paar dagen mee
bezig, maar ik zie het niet helemaal zuiver meer. :D
Is er iemand die mij een klein beetje kan helpen.
Mijn tweede vraag is zijn er in Nederland gebruikers groepen die python
programmeer lessen geven, of zijn er lokale groepen of mensen die dit doen?
Alvast bedankt voor uw tijd, en mijn excuses als de mailing list hier
niet voor bedoeld is.
gr
Johan
More information about the Python-nl
mailing list