Hallo zusammen,
ich würde gerne eine bestimmte Version von Excel einlesen. Das prinzipielle Einlesen der Datei habe ich bereits. Jedoch habe ich mehrere Dateien mit dem gleichen Dateinamen, bspw.
Mitarbeiterliste110518
Mitarbeiterliste110618
Mitarbeiterliste110718 usw.
Die Datei soll monatlich automatisiert gelesen werden und davon immer die aktuellste/letzte Version.
Ich bin absoluter Neuling & habe diesbezüglich leider noch nichts finden können
Kann mir dabei jemand behilflich sein?
Vielen lieben Dank schon mal.
Aktuellste Excel-Datei einlesen
-
- User
- Beiträge: 219
- Registriert: Donnerstag 21. Juli 2011, 07:01
- Wohnort: Stade / Hamburg
- Kontaktdaten:
Schau dir mal das Datetime-Modul an:
Code: Alles auswählen
import datetime
d = datetime.date.today()
dateiname = 'Mitarbeiterliste11{:02d}18'.format(d.month)
print(dateiname)
#>>> Mitarbeiterliste110618
- __blackjack__
- User
- Beiträge: 13110
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Elsom: Falls Du die Dateinamen unter Kontrolle hast, solltest Du sie so benennen, das man die Namen einfach lexikografisch sortieren kann und dabei die richtige zeitliche Reihenfolge heraus kommt. Also die Datumsangabe im Namen in der Reihenfolge Jahr, Monat, Tag und nicht umgekehrt.
Dann kannst Du einfach die `max()`-Funktion auf die Dateinamen anwenden. Ansonsten müsstest Du Dir für `max()` eine entsprechende Funktion für das `key`-Argument schreiben.
Dann kannst Du einfach die `max()`-Funktion auf die Dateinamen anwenden. Ansonsten müsstest Du Dir für `max()` eine entsprechende Funktion für das `key`-Argument schreiben.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
@Bolitho: warum formatierst Du nicht auch das Jahr?
@Elsom: normalerweise benennt man Dateinamen nach dem Schema jjmmtt, dann lassen sich die Dateien einfach lexikalisch sortieren und man bekommt so auch die neueste Datei.
Code: Alles auswählen
dateiname = 'Mitarbeiterliste11{:%m%y}'.format(d)
Hallo nochmal,
zuerst einmal vielen Dank für die schnellen Antworten. Jetzt wird mir klar wie schlecht ich mein Problem erklärt habe Zunächst: Die Dateinamen haben ein lexikalisches Schema. Folgende Dateien stehen zur Verfügung:
Mitarbeiterliste_201703112345.XLS
Mitarbeiterliste_201808131256.XLS
Mitarbeiterliste_201806112863.XLS
Die Zahlen hinter dem Datum variieren, da diese Dateien exportiert werden und somit dabei diese Formatierung erhalten. Damit brauche ich nicht nur die aktuellste Datei, sondern muss auch die variierende Zahlenfolge berücksichtigen.
Aktuell kann ich die Datei aufrufen, jedoch eben nur eine bestimmte Datei:
zuerst einmal vielen Dank für die schnellen Antworten. Jetzt wird mir klar wie schlecht ich mein Problem erklärt habe Zunächst: Die Dateinamen haben ein lexikalisches Schema. Folgende Dateien stehen zur Verfügung:
Mitarbeiterliste_201703112345.XLS
Mitarbeiterliste_201808131256.XLS
Mitarbeiterliste_201806112863.XLS
Die Zahlen hinter dem Datum variieren, da diese Dateien exportiert werden und somit dabei diese Formatierung erhalten. Damit brauche ich nicht nur die aktuellste Datei, sondern muss auch die variierende Zahlenfolge berücksichtigen.
Aktuell kann ich die Datei aufrufen, jedoch eben nur eine bestimmte Datei:
Code: Alles auswählen
import xlrd
file = r'C:\Users\elsom\Desktop\Python\Test Daten Python\Mitarbeiterliste_201806185689.XLS'
wb = xlrd.open_workbook(file)
Danke, aber ich verstehe gerade nicht wie mir die Antwort hilft??? :K
Code: Alles auswählen
import xlrd
import datetime
d = datetime.date.today()
file = r'C:\Users\elsom\Desktop\Python\Test Daten Python\Mitarbeiterliste_20{:%y%m%d}5689.XLS'.format(d)
wb = xlrd.open_workbook(file)
Vielen Dank nochmal...
Nein. Du musst mit listdir schon die real existierenden Dateien bestimmen. Und dann basierend auf dem Datum sortieren. Die letzte ist dann die gesuchte. Das „aktuellste Datum“ ist ja kein allgemeines Konzept. Das findet man also nicht magisch. Sondern man sucht durch die real existierenden Einträge.
Um sortieren zu können, musst du den Teil des Datums aus dem Dateinamen extrahieren. Zb mit String split am untersrich & dann den zweiten Teil einfach als Sortierschlüssel benutzen.
Um sortieren zu können, musst du den Teil des Datums aus dem Dateinamen extrahieren. Zb mit String split am untersrich & dann den zweiten Teil einfach als Sortierschlüssel benutzen.
Du sagst selbst, dass Du das aktuelle Datum nicht kennst, also mußt Du die vorhandenen Dateinamen durchsuchen.
Code: Alles auswählen
from glob import iglob
XLS_PATTERN = r'C:\Users\elsom\Desktop\Python\Test Daten Python\Mitarbeiterliste_{:%Y%m%d}*.XLS'
newest_file_at_date = max(iglob(XLS_PATTERN.format(d)))