Dag Johan, Het gaat mis omdat je index (3 in dit geval) onderdeel is van de string, terwijl je wilt dat die dynamisch wordt. In python kan dat handig met de format method die hoort bij een string object:
i = 3 'BoxID=\"boxid[{}]"'.format(i) # NB: de volledige string heeft enkel quotes, je kunt daarbinnen dan dubbele quotes gebruiken zonder te escapen. Groet, Jan 2014-04-25 16:28 GMT+02:00 Johan Hendriks <joh.hendr...@gmail.com>: > 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 > _______________________________________________ > Python-nl mailing list > Python-nl@python.org > https://mail.python.org/mailman/listinfo/python-nl >
_______________________________________________ Python-nl mailing list Python-nl@python.org https://mail.python.org/mailman/listinfo/python-nl