2016-07-12 5 views
0

Ich habe eine Funktion geschrieben, die alle version.php-Dateien in einem Pfad findet. Ich versuche, die Ausgabe dieser Funktion zu nehmen und eine Zeile aus dieser Datei zu finden. Die Funktion, die Dateien findet, ist:Finden Sie fileS und suchen Sie dann eine Zeichenfolge in diesen Dateien

def find_file(): 
    for root, folders, files in os.walk(acctPath): 
    for file in files: 
     if file == 'version.php': 
     print os.path.join(root,file) 
find_file() 

Es gibt mehrere version.php Dateien im Pfad, und ich möchte eine Zeichenfolge aus jeder dieser Dateien zurückzukehren.

Edit: Vielen Dank für die Vorschläge, meine Implementierung des Codes passte nicht meine Notwendigkeit. Ich konnte es herausfinden, indem ich eine Liste erstellte und jedes Element an den zweiten Teil weitergab. Dies ist vielleicht nicht der beste Weg, um es zu tun, ich habe nur ein paar Tage Python gemacht.

def cmsoutput(): 
    fileList = [] 
    for root, folders, files in os.walk(acctPath): 
    for file in files: 
     if file == 'version.php': 
     fileList.append(os.path.join(root,file)) 

    for path in fileList: 
    with open(path) as f: 
     for line in f: 
     if line.startswith("$wp_version ="): 
      version_number = line[15:20] 
      inst_path = re.sub('wp-includes/version.php', '', path) 
      version_number = re.sub('\';', '', version_number) 
      print inst_path + " = " + version_number 

cmsoutput() 
+0

Welche Zeichenfolge möchten Sie zurückgeben? Nach welchen Kriterien? –

+0

Die gesuchte Zeichenfolge ist "$ wp_version =", es gibt keine weiteren Kriterien außer ihrer Existenz. – cthulhuplus

Antwort

0

Da Sie die Ausgabe Ihrer Funktion nutzen möchten, müssen Sie return etwas. Drucken es nicht schneiden. alles unter der Annahme, es funktioniert leicht modifiziert werden muss, wie folgt:

import os 


def find_file(): 
    for root, folders, files in os.walk(acctPath): 
     for file in files: 
      if file == 'version.php': 
       return os.path.join(root,file) 

foundfile = find_file() 

Jetzt Variable foundfile den Pfad der Datei enthält, stellen wir wollen, betrachten.

with open(foundfile, 'r') as f: 
    content = f.readlines() 
    for lines in content: 
     if '$wp_version =' in lines: 
      print(lines) 

Oder in Funktion Version:

def find_in_file(string_to_find, file_to_search): 
    with open(file_to_search, 'r') as f: 
     content = f.readlines() 
     for lines in content: 
      if string_to_find in lines: 
       return lines 

# which you can call it like this: 
find_in_file("$wp_version =", find_file()) 

Beachten Sie, dass die Funktion Version des Codes oben wird beendet, sobald es einen findet die Suche nach einer Zeichenfolge in der Datei kann dann wie so getan werden, Instanz der Zeichenfolge, die Sie suchen. Wenn du sie alle bekommen willst, muss sie geändert werden.

Verwandte Themen