op 25-04-14 18:36, albert visser schreef:
Hoi Johan,

On Fri, 25 Apr 2014 16:28:15 +0200, Johan Hendriks <joh.hendr...@gmail.com> wrote:

Goedemiddag allemaal.


Je belangrijkste issues lijken me het samenstellen van de zoekstring en het aflopen van alle mogelijkheden bij het zoeken.

Zoals eerder verteld kun je een zoekstring opbouwen als zoekstring = 'BoxID="{}".format(boxid) Bij het doorlezen van het boxid bestand kun je een in plaats van de boxid's te printen een list opbouwen met alle dingen die je zoekt.
Bv.
with open("/root/scripts/boxid","r") as f:
    boxids = ['BoxID="{}".format(x.strip()) for x in f.readlines()]

Tijdens de lus waarin je de bestanden doorloopt kun je dan alle zoekstrings stuk voor stuk uitproberen:

for filename in all_files:
    found = False
    with open(filename) as f_in:
        for search in boxids:
            if search in f_in.read():
                found = True
                break
    if found:
        print(filename) # of wat je er dan ook mee wilt doen

Als dit te snel gaat: ik heb hier wat statements in elkaar geschoven, als je wilt kun je de langere versie ook krijgen. Disclaimer: ik heb deze code niet getest dus of het werkt weet ik niet, het is meer bedoeld om je een idee te geven van hoe je dit kan aanpakken. NB ik gebruik hier print(x) in plaats van print x, dat is omdat ik me heb aangewend om met Python 3 te werken; ik zou je aanraden om als je net begint dat niet met Python 2 te doen tenzij je daar een absoluut goede reden voor hebt.



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?


Geen idee maar mailing lijsten zoals deze zijn hier volgens mij bij uitstek geschikt voor. Als beginner zou je misschien ook Python-tutor kunnen proberen, maar dat is dan wel in het Engels. Hou er rekening mee dat veel mensen liever je eigen code willen zien en daar advies over geven dan je programma's voor je schrijven - ik zeg altijd maar dat je meer leert van een paar keer iets fout doen dan van een "first-time right".


Alvast bedankt voor uw tijd, en mijn excuses als de mailing list hier niet voor bedoeld is.

Zie boven

gr
Johan
_______________________________________________
Python-nl mailing list
Python-nl@python.org
https://mail.python.org/mailman/listinfo/python-nl


Dankzij jullie aanwijzingen is het mij dan toch gelukt, en ik zag het eigenlijk al niet echt meer zitten :D

Het was even stoeien, maar de aanhouder wint..
De prints tussen door deed ik om te kijken of er ook daadwerkelijk iets uit kwam.
bijvoorbeeld print content gaf mij op een gegeven moment
"123
"
Zo kwam ik er dus achter dat er een return mee kwam. na wat googlen kun je die dus weghalen met rstrip() Het is erg leuk om zo bezig te zijn, maar soms heb je net even het zetje in de juiste richting nodig.


Uiteindelijk is het script als volgt geworden.

#!/usr/bin/env python
import os, string

# get boxid's

with open("/root/scripts/boxid","r") as f:
    content = f.read().rstrip("\n")
    boxid = content.split()

# read the XML files

path = "/usr/local/samba/data/XML"

for fname in os.listdir(path):
    document = os.path.join(path, fname)
    for line in open(document):
         for i in range(len(boxid)):
             searchstring = 'BoxID="{}"'.format(boxid[i])
             if searchstring in line:
                 print document, searchstring

Het bestand /root/scripts/boxid bevat het volgende :
49
46
149
123

Na het uitvoeren van het script ziet het er als volgt uit.

FreeBSD-thuis scripts # ./ggsecurity.py
/usr/local/samba/data/XML/RXL0061361833.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061361560.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061361243.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061360944.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061360652.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061346439.xml', 'BoxID="46"
/usr/local/samba/data/XML/RXL0061380738.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061380409.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL0061380106.xml', 'BoxID="123"
/usr/local/samba/data/XML/RXL1670876746.xml', 'BoxID="46"
/usr/local/samba/data/XML/1656754454544.xml', 'BoxID="49"
/usr/local/samba/data/XML/1556467754332.xml', 'BoxID="149"

Nu is het tijd om te gaan slapen....
Van de week weer verder om er wat meer acties aan vast te knopen zoals het verplaatsen en hernoemen van de gevonden bestanden.

Ik wil jullie allemaal heel erg bedanken voor jullie tijd om mij op het goede spoor te zetten.

gr
Johan
_______________________________________________
Python-nl mailing list
Python-nl@python.org
https://mail.python.org/mailman/listinfo/python-nl

Antwoord per e-mail aan