Seite 1 von 1
Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 09:14
von Jango1
Hallo Leute,
Bin noch richtig im einstieg zu Programmieren.
Deshalb hätte ich eine frage und zwar bin ich dabei eine Abfrage in einem Ordnerverzeichnis durchzuführen. Suchen würde ich die Endung .csv was mir bis jetzt auch gelungen ist. Doch wie kann ich das Datum begrenzen? ich möchte immer nur ein gewissen Datum von/bis auslesen.
import os
for root, dirs, files in os.walk('Q:\……...):
for file in files:
if file.endswith("csv"):
print(os.path.join(file))
print('')
Vielleicht kann mir jemand auf die sprünge helfen. Eventuell Metadaten auslesen? Oder zu kompliziert gedacht?
Vielen Dank im Voraus
Jango
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 10:01
von __blackjack__
@Jango1: Du solltest da noch den Punkt bei ".csv" mit rein nehmen. Und bei neuem Code würde ich auch eher zu `pathlib.Path.rglob()` statt `os.walk()` greifen.
Für die Metadaten kennen `Path`-Objekte die `stat()`-Methode. Mit `datetime.datetime.fromtimestamp()` kann man aus den POSIX-Zeitstempeln dann ein `datetime.datetime`-Objekt erstellen und das kann man mit anderen `datetime.datetime`-Objekten vergleichen um den Zeitraum einzugrenzen.
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 10:12
von Sirius3
hier mal zur Veranschaulichung, wie das mit pathlib aussieht:
Code: Alles auswählen
from pathlib import Path
path_to_csv = Path('Q:/...')
for filename in path_to_csv.rglob('*.csv'):
time_stamp = filename.stat().st_mtime
print(filename)
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 10:43
von Jango1
Hallo Sirius3,
vielen Dank für die rasch Antwort. Ich habe nun den time_stamp in print hinzugefügt. Jetzt scheitert es jedoch an der Unix Umwandlung in ein lesbares Datum. Ich werde mal weiter versuchen.
Vielen Dank

Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 10:51
von DeaD_EyE
Wenn du jede Datei manuell auf die Dateiendung prüfen willst, kannst du die Funktion
os.path.splitext verwenden, um Pfad von Dateierweiterung zu trennen. Dann solltest du dir noch das Modul
glob ansehen.
Das ganze lässt sich alles recht gut abstrahiert vom Betriebssystem mit
pathlib erledigen.
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 11:16
von Sirius3
Hast Du Dir schon `datetime.datetime.fromtimestamp` angeschaut?
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 11:18
von Jango1
Sirius3 hat geschrieben: Dienstag 4. Februar 2020, 11:16
Hast Du Dir schon `datetime.datetime.fromtimestamp` angeschaut?
Hi,
ja nur weis ich nicht welche variable ich eintragen muss um nicht jeden Unix Code einzeln zu formatieren.
from pathlib import Path
path_to_csv = Path('Q:\….)
for filename in path_to_csv.rglob('*.csv'):
time_stamp = filename.stat().st_mtime
print(filename, time_stamp)
import datetime
readable = datetime.datetime.fromtimestamp()
print(readable)
LG
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 11:43
von Sirius3
Was meinst Du mit `einzeln formatieren`? In jedem Schleifendurchgang willst Du den timestamp in ein datetime-Objekt umwandeln und mit deinen Zeiten vergleichen.
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 11:53
von Jango1
Sirius3 hat geschrieben: Dienstag 4. Februar 2020, 11:43
Was meinst Du mit `einzeln formatieren`? In jedem Schleifendurchgang willst Du den timestamp in ein datetime-Objekt umwandeln und mit deinen Zeiten vergleichen.
Ja genau, habs jetzt so gelöst und es funktioniert

jetzt nur noch die Funktion zum selektieren Datum z.B von 30.01.2020 - heute.
from pathlib import Path
import datetime
path_to_csv = Path('O:\…..)
for filename in path_to_csv.rglob('*.csv'):
time_stamp = filename.stat().st_mtime
readable = datetime.datetime.fromtimestamp(filename.stat().st_mtime)
print(filename)
print(readable)
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 13:05
von __blackjack__
@time_stamp: Du verwendest `time_stamp` nirgends, solltest Du aber vielleicht statt den Wert noch mal zu ermitteln.
`readable` ist als Name falsch, da würde man einen Wahrheitswert erwarten der aussagt ob die Datei lesbar ist, was ja was ganz anderes als ein Zeitstempel ist.
Du brauchst halt jetzt noch ein ``if`` in dem geprüft wird ob das `datetime`-Objekt was Du jetzt schon hast, grösser ist als ein `datetime`-Objekt das den 30.1.2020 repräsentiert.
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 13:44
von Jango1
__blackjack__ hat geschrieben: Dienstag 4. Februar 2020, 13:05
@time_stamp: Du verwendest `time_stamp` nirgends, solltest Du aber vielleicht statt den Wert noch mal zu ermitteln.
`readable` ist als Name falsch, da würde man einen Wahrheitswert erwarten der aussagt ob die Datei lesbar ist, was ja was ganz anderes als ein Zeitstempel ist.
Du brauchst halt jetzt noch ein ``if`` in dem geprüft wird ob das `datetime`-Objekt was Du jetzt schon hast, grösser ist als ein `datetime`-Objekt das den 30.1.2020 repräsentiert.
Hi Blackjack,
hättest du etwas zum veranschaulichen?
Ich kann mir gerade nichts aus deinen Infos zusammen reimen.
LG
Re: Daten nach Endung und Datum filtern
Verfasst: Dienstag 4. Februar 2020, 14:08
von Sirius3
Code: Alles auswählen
datetime.datetime(2020,2,3)<datetime.datetime(2020,2,4)
Re: Daten nach Endung und Datum filtern
Verfasst: Mittwoch 5. Februar 2020, 11:22
von Jango1
Sirius3 hat geschrieben: Dienstag 4. Februar 2020, 14:08
Code: Alles auswählen
datetime.datetime(2020,2,3)<datetime.datetime(2020,2,4)
Hallo Sirius,
vielen Dank für deine Hilfe.
Könntest du mi noch einmal unter die arme greifen?
Und zwar:
Ich habe nun die daten ausgelesen und nach Datum gefiltert. Antwort : …….. Dateiname.csv True oder False
Nun würde ich gerne Die True Dateien gerne in einen Ordner kopieren der mit dem Tagesaktuellen Datum versehen ist.
Gibt es für so eine Anforderung eine Lösung in Python? Da ich dies erst seit ca. 3 Tagen mache habe ich davon keinen Schimmer.
LG
Re: Daten nach Endung und Datum filtern
Verfasst: Mittwoch 5. Februar 2020, 11:25
von __blackjack__
Du bettelst Dir hier irgendwie Zeile für Zeile Dein Programm zusammen. Wenn ich jetzt sage schau mal ins `shutil`-Modul kommt doch als nächstes die Frage was man daraus wie verwendet, statt das Du selbst mal anfängst Python zu lernen…
Re: Daten nach Endung und Datum filtern
Verfasst: Mittwoch 5. Februar 2020, 11:30
von Jango1
__blackjack__ hat geschrieben: Mittwoch 5. Februar 2020, 11:25
Du bettelst Dir hier irgendwie Zeile für Zeile Dein Programm zusammen. Wenn ich jetzt sage schau mal ins `shutil`-Modul kommt doch als nächstes die Frage was man daraus wie verwendet, statt das Du selbst mal anfängst Python zu lernen…
Hallo Blackjack,
ich bettle nicht irgendwelche Zeilen zusammen sondern versuche etwas dazu zu lernen. Jeder fängt doch mal klein an, aber du warst anscheinend von beginn weg ein richtiger super(Held). Also wenn dir meine fragen nicht zusagen, ignoriere sie bitte und überschütte mich nicht mit deinen sinnesbefreiten Anschuldigungen.
Vielen Dank
Re: Daten nach Endung und Datum filtern
Verfasst: Mittwoch 5. Februar 2020, 12:00
von __blackjack__
@Jango1: Ich habe Dich auf das `shutil`-Modul hingewiesen. Wenn Du keine Hilfe willst, frag halt nicht danach…