Sucht eine Datei mit der hoechsten Nummer

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
einefrage
User
Beiträge: 1
Registriert: Montag 16. November 2015, 12:45

Guten Tag liebe Community. Ich habe folgendes Problem und hoffe ihr könnt mir weiterhelfen.

Ich möchte aus meiner Verzeichnis die Datei mit der höchsten Nummer, also z.b (datei001.bin, datei002.bin, datei003.bin) -> datei003.bin suchen und dann eine neue .tmp-Datei mit einer Nummer höher erstellen und öffnen. (z.b datei004.tmp)
Vielen Dank im Voraus! :D
Das ist bisher mein Ansatz:

Code: Alles auswählen

files=os.listdir(PATH)
for fname in files:
    if fname[-4:0]='.bin' && fname[5:8]

        status = true
        while status 
        filenum = filenum + 1
        tmpfilename = PATH + "/" + daten + filenum + .tmp
        f = open(tmpfilename)
Zuletzt geändert von Anonymous am Montag 16. November 2015, 13:47, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@einefrage: was soll das für eine Programmiersprache sein? Du bist hier in einem Pythonforum, ist das richtig? Das Problem besteht aus drei Schritten:
1. Finde alle Dateien mit dem Muster "datei[zahl].bin"
2. Extrahiere die Zahl aus den Dateinamen.
3. Finde das Maximum aller Zahlen.

Ersteres geht am einfachsten mit glob.glob("datei[0-9][0-9][0-9].bin"), die restlichen Punkte solltest Du ohne while-Schleife hinbekommen können.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Oder google mal nach numerischen sortieren.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
BlackJack

Wenn die Zahlen immer die gleiche Anzahl von Stellen haben und mit führenden Nullen aufgefüllt sind, dann kann man auch ganz einfach die Dateinamen sortieren.
Antworten