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
Daten nach Endung und Datum filtern
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
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)
- DeaD_EyE
- User
- Beiträge: 1239
- Registriert: Sonntag 19. September 2010, 13:45
- Wohnort: Hagen
- Kontaktdaten:
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.
Das ganze lässt sich alles recht gut abstrahiert vom Betriebssystem mit pathlib erledigen.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Hi,Sirius3 hat geschrieben: Dienstag 4. Februar 2020, 11:16 Hast Du Dir schon `datetime.datetime.fromtimestamp` angeschaut?
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
Ja genau, habs jetzt so gelöst und es funktioniertSirius3 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.

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)
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@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.
`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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Hi Blackjack,__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.
hättest du etwas zum veranschaulichen?
Ich kann mir gerade nichts aus deinen Infos zusammen reimen.

LG
Code: Alles auswählen
datetime.datetime(2020,2,3)<datetime.datetime(2020,2,4)
Sirius3 hat geschrieben: Dienstag 4. Februar 2020, 14:08Code: 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
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
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…
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Hallo Blackjack,__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…
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
- __blackjack__
- User
- Beiträge: 14051
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Jango1: Ich habe Dich auf das `shutil`-Modul hingewiesen. Wenn Du keine Hilfe willst, frag halt nicht danach…
“Vir, intelligence has nothing to do with politics!” — Londo Mollari