Seite 1 von 1

Liste nach Elementen, die bestimmten Wortschnipsel enthalten, filtern

Verfasst: Donnerstag 11. April 2019, 09:56
von iknowwhatidontknow
Guten Tag liebe Community!

Mir liegt folgender (unvollständiger) Programmcode vor:

Code: Alles auswählen

import os

#Alle Dateien innerhalb eines Verzeichnisses in einer Liste speichern
dirpath = "/home/hpcmbeck/Dokumente"
dirs = os.listdir(dirpath)
print(dirs)

#Diese Liste aufsteigend sortieren
dirs.sort()
print(dirs)

#Liste filtern (alle Dateien die nicht mit "Channel" beginnen sollen raus)
def listfilter(list):
    if ...
    #hier fehlt die Implementierung der Funktion

dirs_filtered = filter(listfilter, dirs)
print(dirs_filtered)
Angenommen im Verzeichnis "/home/hpcmbeck/Dokumente" liegen viele gemischtnamige Dateien, von welchen ich nur die die mit dem Wort "Channel" beginnen, oder das Wort "Channel " im Namen haben, aus der ursprünglichen Liste "dirs" in eine neue Liste "dirs_filtered" filtern möchte:

Wie muss die Funktion listfilter(list) implementiert werden, sodass ich obig beschriebene Aufgabe mittels

Code: Alles auswählen

filter(listfilter, dirs)
ausführen kann?

Quasi eine Funktion die "true" zurückgibt, falls der (Datei)Name des Listenelements mit "Channel" beginnt (oder jener diesen Wortschnipsel im Namen enthält) und "false", wenn nicht.

Vielen Dank für Eure Antworten im Voraus!

Liebe Grüße!

Re: Liste nach Elementen, die bestimmten Wortschnipsel enthalten, filtern

Verfasst: Donnerstag 11. April 2019, 10:15
von __deets__

Code: Alles auswählen

"antwort" in "was ist die antwort auf meine frage?"

Re: Liste nach Elementen, die bestimmten Wortschnipsel enthalten, filtern

Verfasst: Donnerstag 11. April 2019, 10:57
von __blackjack__
@iknowwhatidontknow: In der vorletzten Zeile fehlt noch ein `list()`-Aufruf, damit die letzte Zeile auch tatsächlich die Namen ausgibt, und keine Repräsentation des `filter`-Objekts.

Bei der Namensgebung hast Du `dirs*` bei Werten wo nicht wirklich sichergestellt ist, das es sich tatsächlich nur um Verzeichnisnamen handelt. Das sollte man ändern – entweder in dem man explizit Dateinamen ausfiltert, oder in dem man die Namen im Programm ändert.

Auch wenn das hier wahrscheinlich praktisch keinen Unterschied macht: erst filtern und dann sortieren könnte effizienter sein.

Re: Liste nach Elementen, die bestimmten Wortschnipsel enthalten, filtern

Verfasst: Freitag 12. April 2019, 09:16
von iknowwhatidontknow
@__blackjack__: Habe den List-Aufruf eingefügt. Vielen Dank!

Die Namensgebung dient hier nur zu demonstrativen Zwecken, aber dennoch danke für Deinen Hinweis. Werde soetwas in Zukunft berücksichtigen.

Dennoch ist meine Frage wie die Implementierung der Funktion "listfilter" aussehen könnte, dass nur Dateien die das Wort "Channel" im Namen haben in der neuen Liste stehen, nicht beantwortet. Hat dazu jemand eine Idee?

Liebe Grüße

Re: Liste nach Elementen, die bestimmten Wortschnipsel enthalten, filtern

Verfasst: Freitag 12. April 2019, 09:22
von __deets__
Hast du meine Antwort gesehen? Was daran ist dir unklar?