oliver1804 hat geschrieben:
wozu dient
"from glob import glob" ?
Ich denke mal damit importiert er den glob befehl aus dem "package?" glob in seinen Namespace.
okay,
wie schaut denn diese Sache in Perl aus (werd ich zwar fürs jetzige Projekt nicht anwenden, aber hilft mir vielleicht für die Zukunft)
Marcs Code in Perl könnte man so schreiben:
print map { "$_\n" } glob "c:\\*.*"
oder so:
print "$_\n" for glob 'c:\\*.*'
Ich schreibe hier explizit Marc Code, weil Marc und mein Code nicht genau das machen, was du wolltest.
Ansonsten hängt es eher von dem ab was du machen möchtest. Eine Subroutine zu bauen die dir die Dateinamen aus einem Verzeichnis zurück gibt halte ich für ziemlich Sinnfrei, weil es ja genau das ist was "glob" z.B. macht. Zum anderen stellt sich die frage sich was du genau mit der Liste machen möchtest. Testen auf einem Dateiende, testen ob lesbar. Vielleicht möchtest du rekursiv Dateien durchgehen etc. Je nach Anforderung kann man da bessere Sachen nutzen.
\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\–––-
In der Fehlermeldung zu deinem awk Skript steht das ein Array im Skalarkontext verwendet wird. Wenn diese Fehlermeldung kommt, dann sieht es für mich aber auch so aus, als das es einen Listenkontext geben würde. Und wenn ich es richtig sehe, dann heist deine Funktion doch "verzeichnis_arr" ?
Und ganz oben im Skript rufst du die Funktion so auf. "verzeichnis_arr("c:\\", "*.*")" Nun welchen Sinn macht es eine Funktion aufzurufen die ein Array zurück gibt, wenn du das zurückgegebene Array nirgendswo Speicherst?
Von daher macht diese Fehlermeldung schon Sinn...
Aber kann kein awk. Für mich sieht das aber so schon falsch aus. Ich denke mal in awk sind alle Variablen Global? Wenn nicht würde dein Code noch weniger Sinn ergeben, da in deiner for Schleife "files_arr" vor seiner Verwendung nirgendso "gefüllt" wird. Logisch wäre für mich dann z.B. soetwas:
files_arr = verzeichnis_arr("c:\\", "*.*")
files_arr wird allerdiengs in deiner Funktion gefüllt. Sind Variablen automatisch Global dann macht der Code Sinn. Allerdiengs muss deine Funktion dann nichts mehr zurück geben (return).