[python-nl] zoeken binnen file.

Johan Hendriks joh.hendriks at gmail.com
Fri Apr 25 21:57:32 CEST 2014


op 25-04-14 17:10, Floris van Manen schreef:
> Je hebt een folder met daarin een aantal bestanden en in elk bestand een aantal regels met op elke regel één getal?
> Vervolgens wil je een lijst van alle bestanden en daarvan alle regels waarvan de waarde <= is aan een gegeven integer (float) waarde?
>
> In dat geval zou je een dict kunnen maken met als sleutel de naam van het bestand en als value de lijst van de getallen in dat bestand.
>
> Afhankelijk van het aantal keren dat je die data wilt doorzoeken, kun je er voor kiezen om de getallen als index te kiezen met als value een lijst van bestandsnamen.
>
> .F
>
>
> bijvoorbeeld:
>
>
> #!/usr/bin/env python
> # encoding: utf-8
>
> import os
> from collections import defaultdict
>
> fv = defaultdict(list)
> vf = defaultdict(list)
>
> folder = 'tmp'
> for fn in os.listdir(folder):
>      ffn = os.path.sep.join([folder, fn])
>      if fn.endswith('.txt'):
>          with open(ffn, 'r') as fp:
>              content = fp.readlines()
>              values = [int(x) for x in content if x]
>              print ffn
>              print values
>              fv[ffn].append( values)
>              for v in values:
>                  vf[v].append( ffn )
>
>
> print '='*20
> print fv
> print '='*20
> print vf
>
> print '='*20
> zoek = 46
> for k,v in vf.iteritems():
>      if k <= zoek:
>          print v
>
>
>
>
>
>
>
> _______________________________________________
> Python-nl mailing list
> Python-nl at python.org
> https://mail.python.org/mailman/listinfo/python-nl
Niet helemaal ...

Ik heb een directory (/usr/local/samba/data/XML) met daarin enkele 
files, en per uur komen hier een 100 tal files bij.
In ieder bestand in deze directory staat een regel met BoxID="xxx",waar 
xxx een getal is tussen 0 en 999.
Nu wil ik deze bestanden filteren op BoxID  Soms heb ik er 1 nodig, soms 
meerdere. en het kan zijn dat er meerdere bestanden zijn met hetzelfde 
BoxID.
Nu dacht ik als ik een bestand aanmaak (/root/scripts/boxid) en ik zet 
daar de nummers in die ik wil dan ben ik klaar.

Echter lukt dat nog niet helemaal, of beter gezegd helemaal niet. Blijkt 
toch even wat anders te gaan dan gedacht.

Ik ga ook met de antwoorden van de andere even aan de slag..

Alvast bedankt allemaal.

gr
Johan


More information about the Python-nl mailing list