Hallo,
ich habe folgendes Problem. Ich möchte in einem Verzeichnis dass ungefähr so aufgebaut ist die neuste gespeicherte csv.Datei finden.
Projekte--Jahr--Monat--Tag--Minute.csv
Ich habe folgendes probiert:
newest = max(glob.iglob('project/jahr/monat/tag/*.[Cc][Ss][Vv]'), key=os.path.getctime)
print(newest)
Das funktioniert auch, aber ich muss genau den Pfad zum Tag angeben. Gibt es eine funktion im os.Modul wo ich über das ganze Verzeichnis
projekte suchen kann und das relativ schnell, obwohl recht viel Dateien enthalten sind.
Bitte um kurzen Denkanstoss in die richtige Richtung.
Neueste gespeicherte Datei im Verzeichnisbaum finden
Hallo Sirius3,
ich muss konkret nur in einem Projekt suchen, es werden dort jeweils pro Tag ein Ordner angelegt wo pro Minute eine csv hineingeschrieben wird. Es kann aber auch sein, da die Ordner auf einen Server sind , dass an ein paar Tagen nichts transferiert wird.
Ich möchte dann trotzdem gern wissn welche die letzte gespeicherte Datei ist.
Wie würdest du es anstellen, anhand des aktuellen Timestamps den Tag herausfinden und dann die letzte Datei. Was wäre aber bei dem Fall dass nichts auf den Server transferiert wurde. Dann müsste rückwärts gesucht werden, stell ich mir sehr umständlich vor.
Gibt es ein Modul was in Ordner und Unterordner sucht ohne den Pfad absolut einzugeben?
ich muss konkret nur in einem Projekt suchen, es werden dort jeweils pro Tag ein Ordner angelegt wo pro Minute eine csv hineingeschrieben wird. Es kann aber auch sein, da die Ordner auf einen Server sind , dass an ein paar Tagen nichts transferiert wird.
Ich möchte dann trotzdem gern wissn welche die letzte gespeicherte Datei ist.
Wie würdest du es anstellen, anhand des aktuellen Timestamps den Tag herausfinden und dann die letzte Datei. Was wäre aber bei dem Fall dass nichts auf den Server transferiert wurde. Dann müsste rückwärts gesucht werden, stell ich mir sehr umständlich vor.
Gibt es ein Modul was in Ordner und Unterordner sucht ohne den Pfad absolut einzugeben?
-
BlackJack
@paeppi_79: Ich denke Sirius3 meinte den Ordner in dem dann letztendlich die CSV-Dateien liegen. Und er ging davon aus das die Angaben *im* Pfad stimmen, also in dem Namen nach älteren (Unter)Ordnern keine neue(re)n Dateien angelegt werden. Kann man davon ausgehen? Falls nicht muss man doch den ganzen Verzeichnisbaum absuchen.
Dafür gäbe es dann zum Beispiel `os.walk()`. Das sollte man aber nur nehmen falls der von Sirius3 skizzierte Weg nicht funktioniert.
Dafür gäbe es dann zum Beispiel `os.walk()`. Das sollte man aber nur nehmen falls der von Sirius3 skizzierte Weg nicht funktioniert.
Hallo BlackJack,
ja das stimmt, es wird für jeden tag des Monats ein Unterordner angelegt in dem auch nur für den tag die .csv Dateien hineinkommen
Wie gesagt könnten dort pro Tag etwa 1400 Dateien sein.
Also sollte ich doch systematisch prüfen ob ausgehend vom heutigen Datum es einen ordner für das Jahr, einen für den Monat und einen für den heutigen Tag gibt und dort suchen?
Wenn der Unterordner nicht da ist dann einen zuvor suchen?Was mache ich dann bei evtl Monatswechsel?
Danke schon mal für die Hilfe.
ja das stimmt, es wird für jeden tag des Monats ein Unterordner angelegt in dem auch nur für den tag die .csv Dateien hineinkommen
Wie gesagt könnten dort pro Tag etwa 1400 Dateien sein.
Also sollte ich doch systematisch prüfen ob ausgehend vom heutigen Datum es einen ordner für das Jahr, einen für den Monat und einen für den heutigen Tag gibt und dort suchen?
Wenn der Unterordner nicht da ist dann einen zuvor suchen?Was mache ich dann bei evtl Monatswechsel?
Danke schon mal für die Hilfe.
-
BlackJack
@paeppi_79: Das heutige Datum ist egal, darum geht es nicht, es geht darum sich auf jeder Ebene den jeweils passenden Unterordner auszusuchen, also auf oberster nur das aktuellste Jahr, dann eine Ebene tiefer nur den aktuellsten Monat und so weiter, statt wirklich *alles* zu durchsuchen. So muss man dann am Ende nur noch aus 1400 Dateien die Neueste suchen statt aus x mal 1400 Dateien. Falls die entsprechenden Zahlen in den Ordner- und Dateinamen alle gleich lang sind, braucht man sich nicht einmal die Dateidatums-Metainformationen ansehen, sondern kann sich jeweils das lexikografische Maximum aus den entsprechenden Ordner- und Dateinamen suchen.
O.K. hab verstanden um was es geht und hab einen Lösungsansatz im Kopf. Probiere ich morgen gleich mal aus,
komme von hier aus nicht auf den Server.
Werd den Code dann hier mal posten unabhängig vom Erfolg.
Vielen Dank vorerst!
komme von hier aus nicht auf den Server.
Werd den Code dann hier mal posten unabhängig vom Erfolg.
Vielen Dank vorerst!
