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

Antwoord per e-mail aan