2016-05-23 4 views
0

Ich habe mehrere Dateien, die mit dem Namen VCALogParser_output_ARW.log, VCALogParser_output_ARW_PREVIOUS.log, VCALogParser_output_GED.log, VCALogParser_output_GED_PREVIOUS.log und so weiter beginnt. Ich möchte nur die Datei lesen, die mit VCALogParser_output_ARW.log beginnt, aber nicht die PREVIOUS.log-Dateien. ARW, GED usw. (zB ARW ist arabisch, GED ist deutsch und so weiter). Ich habe den folgenden Code ausprobiert, aber es wird sowohl die Datei VCALogParser_output_.log als auch die Datei VCALogParser_output_ARW_PREVIOUS.log gelesen. Kann mir bitte jemand sagen, was ist der Fehler mit dem folgenden Code?Wie lese ich einen bestimmten Namen aus der Liste der Dateien in Python?

with open(output_filename, 'w') as f_output: 
    for dirpath, dirnames, filenames in os.walk(directory): 
     for filename in filenames: 
      if re.match('VCALogParser_output_[A-Z]+\.log', filename): 
      #if (filename.startswith('VCALogParser_output') and (not filename.endswith('previous.log'))): 
       str=filename 
       str=str.replace("VCALogParser_output_", "") 
       str=str.replace(".log", "") 
+0

Ist die 'filename' nur * enthalten * der Dateiname oder der gesamte Pfad? Außerdem sollten Sie ein 'r' vor die Regex-Musterzeichenfolge setzen. –

+0

Funktioniert für mich. Kannst du eine Ausgabe zeigen, die dein Verhalten zeigt? – Daniel

+0

Ich habe das versucht, aber es liest auch die aktuelle und vorherige Protokolldatei. – surya

Antwort

0

Wenn Sie nur ein Verzeichnis auflisten möchten, verwenden Sie glob:

with open(output_filename, 'w') as f_output: 
    for filename in glob.iglob(os.path.join(directory, 'VCALogParser_output_???.log')): 
     # do whatever you want with filename 
Verwandte Themen