Seite 1 von 1

File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 11:30
von Sebi.Schneider
Hallo Freunde,

gibt es in Python eine Möglichkeit,
Files nach Zugriffsdatum zu sortieren??

Vielen Dank für die Hilfe

Re: File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 11:43
von BlackJack
@Sebi.Schneider: Wenn die Information vom Dateisystem erfasst wird und per `os.path.getmtime()` abfragbar ist, dann ja. Sowohl `list.sort()` als auch `sorted()` haben ein `key`-Argument wo man eine Funktion übergeben kann die ein Element bekommt und daraus dann einen Sortierschlüssel berechnen kann. Da müsste man `getmtime()` direkt verwenden können wenn man eine Liste mit Dateipfaden hat.

Re: File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 12:51
von cofi
Ha, Blackjack macht etwas falsch, das ich das noch erleben darf :twisted:

`getmtime` gibt die *Modifizierungs*zeit, fuer die *Zugriffs*zeit gibt es `getatime`.

Re: File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 14:37
von Sebi.Schneider
@cofi

ja genau du hast Recht : ) ist getatime

Code: Alles auswählen

for file in os.listdir(PFAD):
            mtime=time.mktime(time.localtime()) 
            #Berechne Differenz zwischen Zeiten in Sekunden
            zeitdiff=(int(mtime)) - int(os.path.getmtime(PFAD+"/"+file))
            
            #Pruefe ob Differen-Sekunden groesser ist als Timeout
            if (zeitdiff > self.timeout):
                if not (os.path.isdir(PFAD+"/"+file)):
                    os.remove(PFAD+"/"+(file))
                    print "File geloscht"
            sorted(os.path.getatime(PFAD+"/"+file))
Fehler: 'float' object is not iterable

Re: File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 15:28
von snafu
Sebi.Schneider hat geschrieben:

Code: Alles auswählen

sorted(os.path.getatime(PFAD+"/"+file))
Fehler: 'float' object is not iterable
Ja, `getatime()` liefert halt die Zugriffszeit für *eine* Datei als Zahl zurück - daher der Fehler.

In Wirklichkeit willst du ja sehr wahrscheinlich das Ergebnis *aller* Schleifendurchläufe sortieren. Dafür wirst du den Code noch etwas umbauen müssen...

Re: File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 15:54
von Sebi.Schneider
@snafu ja genau, das würde ich gerne wollen...

muss ich die files irgendwie woher in einem Array packen und von da aus lesen :K :K

Re: File nach Zugriffsdatum sortieren

Verfasst: Donnerstag 4. Juli 2013, 17:12
von snafu
Sebi.Schneider hat geschrieben:muss ich die files irgendwie woher in einem Array packen und von da aus lesen :K :K
Ja, richtig. Du erstellst eine Liste und lässt diese dann sortieren. Als Sortierschlüssel verwendest du die Funktion zum Erhalten der Zugriffszeit. Das kann dann (anfängerfreundlich) in etwa so aussehen:

Code: Alles auswählen

import os

def get_atime_sorted(directory):
    result = []
    for filename in os.listdir(directory):
        joined_path = os.path.join(directory, filename)
        if os.path.isfile(joined_path):
            result.append(joined_path)
    return sorted(result, key=os.path.getatime)

Re: File nach Zugriffsdatum sortieren

Verfasst: Freitag 5. Juli 2013, 13:11
von Sebi.Schneider
Super, Danke ;)