Finden einer Datei (rekursiv und von ihrer Dateigröße abhängig) in einem bestimmten Zeitintervall

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Benutzeravatar
Roger
User
Beiträge: 1
Registriert: Freitag 15. Juni 2018, 12:06

Hallo!

Blutiger Python Beginner sucht auf diesem Weg Hilfe! Es geht um ein Python Programm für Version 2.7.14!

Mein Problem:

Ich habe zwei Variablem time_stamp_on & time_stamp_off. In diesen Variablen steht die Unixtime.

Nun muss eine Datei gefunden werden, nämlich die Datei, die zwischen den beiden Zeiten liegt und sich in ihrer Dateigröße am weitesten vom Durchschnitt der anderen Dateien die auch in diesem Intervall liegen, abhebt (sowohl negativ als auch positiv). Zu durchsuchen sind u.U. mehrere Unterverzeichnisse eines darüberliegenden Oberverzeichnisses.

Beispiel: Ihr habt ein Logverzeichnis. Darin liegen Unterverzeichnisse entsprechend des Datums. Darin liegen nun Logdateien. Jetzt aus den Logdateien die in dem Zeitintervall liegen, die Datei finden, die entweder größer oder kleiner als der Durchschnitt der anderen Dateien des Intervalls ist.

Cool wäre ein Array zu beschreiben mit z.B. time_stamp_intervall_files = ('Dateipfad', 'Dateiname', 'Dateigröße', 'Differenz zum Durchschnitt').
D. h., die Dateifindung muß zwei Schleifen durchlaufen:

1. Das Array füllen mit Pfad, Dateinamen und Größe aller Dateien im Zeitintervall. Danach / Dabei gleich den Durchschnitt errechnen.
2. Das letzte Array - Feld mit der Differenz zum Durchschnitt füllen.

Kann man bei Python 2.7.14 mit Numpy arbeiten? Dann wäre das finden der größten oder kleinsten Datei am einfachsten.

Vielen Dank im Voraus!
Gruß
Roger
Benutzeravatar
__blackjack__
User
Beiträge: 13004
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Roger: Nun kennen wir die Aufgabe. Was ist denn das konkrete Problem?

Über Verzeichnis- und Dateinamen kann man mit `os.walk()` iterieren. Informationen über Dateien wie Grösse und Datumsangaben kann man mit Funktionen aus `os.path` bekommen. Da sind auch Funktionen um auf Pfaden zu operieren enthalten. Ansonsten gäbe es für Python 2.7 auch einen Backport vom `pathlib`-Modul, das man sich installieren könnte.

Man könnte Numpy verwenden, aber ich sehe da keinen Vorteil bei. Es gibt `min()` und `max()` als Funktionen. Und die gezeigten Informationen in ein Numpy-Array zu Speichern würde ich als Overkill sehen, denn nur zwei Spalten sind tatsächlich Numpy-Typen, die anderen sind Python-Objekte.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten