def fun(EACH) : 
   list1 = []
   EACH = str(EACH)
    for all in a:  # contains names of different checks     
        for files in b :
              for line in open(str(files)) : 
                 if EACH in line :
                           print files
                           break

Tutaj a to katalog, który zawiera wiele plików. Wymieniam te pliki na liście {x1}}. Chcę wyodrębnić pliki z nazwami w {x2}}

Na przykład. Chcę otworzyć plik, który jako ciąg "jabłko" w jej zawartości. To słowo Apple jest przekazywane przez argumenty.

Problem polega na tym, że nie rozumiem, jak przeczytać tę wartość i używać tego samego ciągu w stanie if.

1
user1627331 27 sierpień 2012, 14:02

2 odpowiedzi

Najlepsza odpowiedź

Czy naprawdę musisz przeanalizować każdą linię plików według linii? Czy nie możesz po prostu zrobić coś w rodzaju:

for b in a:
    for fname in b:
        with open(fname, "r") as f:
            content = f.read()
        if EACH in content:
            print "There's a {0} in {1}".format(EACH, fname)

(with open(...) as ... ma upewnić się, że twój plik jest zamknięty po przeczytaniu go ...)

0
Pierre GM 27 sierpień 2012, 11:10

Możesz użyć następującego kodu:

def grepFileForLines( self, fileName = "", keepLinesWith = "" ):
    file = open( fileName, 'r' )
    matches = []

    for line in file:
        if line.find( keepLinesWith ) > -1:
            matches.append( line )
    return matches  
0
Prashant 27 sierpień 2012, 10:07