Such-Verzeichnis für spezielle Zeichenfolge

Ich versuche, eine Suche über ein bestimmtes Verzeichnis voll von header-Dateien, und schauen Sie durch jeden header-Datei, und wenn jede Datei hat einen string "struct" in ihm, ich will einfach nur das Programm zu drucken, die Datei ist es.

Habe ich das bisher, aber es funktioniert nicht richtig, können Sie mir helfen, es herauszufinden:

import glob
import os
os.chdir( "C:/headers" )
for files in glob.glob( "*.h" ):
    f = open( files, 'r' )
    for line in f:
        if "struct" in line:
            print( f )
  • was genau funktioniert nicht?
  • Bitte definieren Sie 'nicht richtig arbeiten'
  • Es ist nicht etwas ausdrucken, obwohl ich Sie viel .h-Dateien mit der Zeile Struktur in dort.
  • sind Sie die Schleife durch die Dateien?: for line in f: print(line)
  • Die for-Schleife können Sie eine Datei zu einem Zeitpunkt, so ist es sollte for file ... (singular, ja, ich bin nick pflücken, aber es hilft, die Anstrengung des Denkens.) Zweitens sollten Sie eine Datei schließen, nachdem zu Ende Lesen. Ich empfehle die Verwendung der with konstruieren, um automatisch schließen Sie die Dateien. Dritte, f ist ein Datei-handle, nicht einen Dateinamen (string), so print file statt print f.
  • Eine Optimierung - wenn die Zeichenkette gefunden wird (nach der print), beenden Sie die Schleife mit break - Sie wissen, in dieser Phase die Datei hat die Zeile, keine Notwendigkeit zu verbringen-Zyklen auf den rest des Inhalts.

Schreibe einen Kommentar