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
`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:
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
