Hallo,
wie kann ich Dateien mit Datumsnamen nacheinander in Python abarbeiten?
Ich habe z.B. ein Verzeichnis mit folgenden Dateien:
20210812.csv
20210813.csv
20210814.csv
20210815.csv
20210816.csv
20210817.csv
Die enthaltenen Daten sollen in eine Excel-Datei überführt werden (das habe ich schon hinbekommen). Ich scheitere jetzt nur daran, dass Python automatisch die Dateinamen erkennt und dementsprechend eine nach der anderen nimmt.
Das ganze ist in mehreren Verzeichnissen, die Anzahl der Dateien bzw. die älteste Datei ist aber jedesmal anders. Mir würde es theoretisch schon reichen wenn ich per Python die Datei mit dem ältesten Dateinamen ausfindig machen könnte, dann könnte ich bis "gestern" hochzählen, die Dateien sind jedenfalls immer lückenlos bis zum Vortag.
Gruß
Alfred
CSV-Dateien mit Datum als Name nacheinander abarbeiten
Der Pfad habe ich fest vorgegeben per
os.chdir ("Z:\\Alfred\\Downloads\Strom\ID00016")
Ich dachte ich könnte einfach den heutigen Tag ermitteln, und die entsprechende Anzahl Dateien abziehen, aber das funktioniert beim Übergang in den nächsten Monat natürlich nicht mehr.
Habe ich zunächst nicht daran gedacht, deshalb müssten eigentlich alle Dateinamen ausgelesen und nacheinander abgeabreitet werden.
os.chdir ("Z:\\Alfred\\Downloads\Strom\ID00016")
Ich dachte ich könnte einfach den heutigen Tag ermitteln, und die entsprechende Anzahl Dateien abziehen, aber das funktioniert beim Übergang in den nächsten Monat natürlich nicht mehr.
Habe ich zunächst nicht daran gedacht, deshalb müssten eigentlich alle Dateinamen ausgelesen und nacheinander abgeabreitet werden.
-
- User
- Beiträge: 512
- Registriert: Mittwoch 13. November 2019, 08:38
Verwende nicht os.chdir. Damit wechselst du das Arbeitsverzeichnis - das ist nicht das was du willst.
Schau dir pathlib.Path und deren glob-Funktion an.
Die Unterscheidung nach Datum habe ich noch nicht ganz verstanden. Willst du bei jedem Durchlauf des Programms alle Dateinamen/Inhalte übertragen? Oder nur die von gestern? Oder nur die, die noch nicht übertragen worden sind?
Schau dir pathlib.Path und deren glob-Funktion an.
Code: Alles auswählen
from pathlib import Path
example_path = Path("Z:/Alfred/Downloads/Strom/ID00016")
for file in example_path.glob("**/*.csv"):
print(file)
- __blackjack__
- User
- Beiträge: 14065
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Wichtig zu dem Beispiel von einfachTobi wäre noch zu erwähnen, dass `glob()` keine Reihenfolge garantiert. Also auch wenn die Ausgabe von dem Code scheinbar in der richtigen Reihenfolge sein sollte, ist das nicht garantiert. Man muss also explizit sortieren. So wie die Dateinamen aussehen, kann man das einfach lexikographisch machen weil die Namen im Format YYYYMMDD.csv zu sein scheinen.
Und wenn man paranoid ist, könnte man noch den Namen prüfen ob der tatsächlich nur ein gültiges Datum + ".csv" ist, bevor man die Datei verarbeitet.
Und wenn man paranoid ist, könnte man noch den Namen prüfen ob der tatsächlich nur ein gültiges Datum + ".csv" ist, bevor man die Datei verarbeitet.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari