rogerb hat geschrieben: Donnerstag 26. August 2021, 08:08
das Problem ist ja dass man sich eben nicht nach den Metadaten mit mstat richten kann, da sie laut Jghurt in der falschen zeitlichen Reihenfolge gespeichert werden könnten. Daher ist einzig der Datumstempel im Dateinamen aussagekräftig um die aktuelle Datei zu erhalten.
[ ] Ja, [ ] Nein, [ ] Vielleicht... pick any two. Im Ernst: ich habe in diesem Thread mittlerweile so viel Irres, Wirres, Verwirrendes und Widersprüchliches von unserem hochverehrten und bemitleidenswerten TO gelesen, daß ich mir bei genau gar nichts mehr sicher bin. Erst wird die Datei nur alle paar Wochen angelegt, dann aber dieselbe Datei mehrmals täglich, in verschiedenen, mitunter falschen Verzeichnissen, und als wäre das nicht schon verrückt genug, scheinen wohl auch noch Kollegen irgendwie manuell in, an, oder darumherum an den Dateien herumzuhantieren...
Insofern, kurz gesagt: ich weiß wenig bis nichts über die tatsächlichen Gegebenheiten, und in solchen Fällen kenne ich nur eine sinnvolle Strategie: erstmal alle Informationen einsammeln, derer ich habhaft werden kann, und am Ende filtere ich mir aus dieser Sammlung heraus, was ich wirklich brauche. Das ist der Grund, warum ich die Rekursion mit os.walk() nutze, dabei die Verzeichnisinformationen in Walker::dirs behalte -- wobei: das hätte ich, sehe ich gerade, anders machen sollen oder mir gleich sparen können -- und warum ich die gesammelten Daten erst ganz am Ende auseinanderklamüsere. Auf diese Weise habe ich nämlich viele schicke Optionen in meiner Walker.get_newest(), zum Beispiel, mir alle Dateien mit demselben Zeitstempel herauszusuchen und daraus die laut Neueste (laut mtime), Größte, Kleinste, abhängig vom Verzeichnisnamen zu benutzen, oder... you get the idea. Die values() meines Dictionary Walker.files dienen ja nur für eine erste Sortierung... wie wo was ich danach sortiere, kann ich mir dann ja immer noch aussuchen.
rogerb hat geschrieben: Donnerstag 26. August 2021, 08:08
Es soll im zeitlich letzten Ordner eine von zwei Dateien mit dem letzten Datumstempel im Namen gefunden werden.
Bist Du sicher? Ich nicht, und ich habe die verschiedenen Ausführungen des TO mehrmals gelesen. Angeblich können Dateien mit demselben Zeitstempel ja auch in verschiedenen Ordnern auftauchen. Und überhaupt, der Zeitstempel: mal ist es nur ein Datum, dann wieder ein Zeitstempel mit Datum und Uhrzeit, ...
rogerb hat geschrieben: Donnerstag 26. August 2021, 08:08
Deine Walker-Klasse findet auch lose Dateien die irgendwo in den Unterverzeichnissen liegen und gibt fälschlicherweise diese aus.
Das stimmt, aber dafür hat Python ja so feine Builtins wie all(), any(), filter() und Co...
Das Einfachste wäre vermutlich, wenn unser hochverehrter Herr TO ein bewährtes Werkzeug wie tree(1) benutzen, seinen Verzeichnisbaum damit rekursiv ausgeben und uns einfach mal zeigen könnte, idealerweise auch mit Zeitstempeln (Optionen -D (mtime) und -c (ctime)). Ja, ich weiß, der Arme hat leider ein Windows, aber unter aktuellen Windows-Systemen soll es doch dieses kongeniale WSL2 (Windows Subsystem for Linux) geben, mit dem man auch Ubuntu-Pakete wie "tree" installieren und benutzen kann... auf diese Weise würden wir vielleicht wirklich mal sehen, was er da hat, anstatt uns auf schwurbelige, widersprüchliche, immer wieder neue und andere Erläuterungen einlassen zu müssen. Und diese Heimlichtuerei mit der Maskierung von Pfaden... das hilft halt auch keinem.
Am Ende, wie schon gesagt: solche Daten gehören inhärent in eine Art zentralisiertes Datenspeichersystem, zum Beispiel eine Datenbank wie PostgreSQL oder MongoDB, in einen indizierten Columnar Store wie Elasticsearch (das hätte zudem den Vorteil, daß dabei mit Kibana ein sehr leistungsfähiges Webfrontend für die Datenanalyse, -aggregation und Visualisierung aus der Tüte fällt) oder meinetwegen auch in einen Redis-Cluster. Dieses, insbesondere auch manuelle, Herumgehampel auf CSV-Dateien ist ein Alptraum für jeden, der damit arbeiten muß, für jede Automatisierung, und hinter jeder Ecke lauert ein Heer von sehr, sehr bösen Fehlern.