Hallo Freunde,
gibt es in Python eine Möglichkeit,
Files nach Zugriffsdatum zu sortieren??
Vielen Dank für die Hilfe
File nach Zugriffsdatum sortieren
@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.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ha, Blackjack macht etwas falsch, das ich das noch erleben darf ![Twisted Evil :twisted:](./images/smilies/icon_twisted.gif)
`getmtime` gibt die *Modifizierungs*zeit, fuer die *Zugriffs*zeit gibt es `getatime`.
![Twisted Evil :twisted:](./images/smilies/icon_twisted.gif)
`getmtime` gibt die *Modifizierungs*zeit, fuer die *Zugriffs*zeit gibt es `getatime`.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
- User
- Beiträge: 38
- Registriert: Freitag 3. Mai 2013, 15:05
@cofi
ja genau du hast Recht : ) ist getatime
Fehler: 'float' object is not iterable
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))
Ja, `getatime()` liefert halt die Zugriffszeit für *eine* Datei als Zahl zurück - daher der Fehler.Sebi.Schneider hat geschrieben:Fehler: 'float' object is not iterableCode: Alles auswählen
sorted(os.path.getatime(PFAD+"/"+file))
In Wirklichkeit willst du ja sehr wahrscheinlich das Ergebnis *aller* Schleifendurchläufe sortieren. Dafür wirst du den Code noch etwas umbauen müssen...
-
- User
- Beiträge: 38
- Registriert: Freitag 3. Mai 2013, 15:05
@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
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:Sebi.Schneider hat geschrieben:muss ich die files irgendwie woher in einem Array packen und von da aus lesen :K :K
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)