2017-01-04 2 views
0

Wie würde ich mit Python aller Dateien in/var/log ein Datum sortierte Liste erstellen müssen geändert beginnend mit yum.logPython gefiltert und das Datum sortierte Liste

ls -la /var/log/yum.log*                          [17-01-04 11:36:41] 
-rw-------. 1 root root  0 Jan 1 03:45 /var/log/yum.log 
-rw-------. 1 root root 16062 Jan 13 2016 /var/log/yum.log-20160113 
-rw-------. 1 root root 36020 Dec 22 16:28 /var/log/yum.log-20170101 

Dieser Code die Liste erstellt, aber es ist nach Namen sortiert.

Wie kann ich diese Liste nach Datum ändern, so dass die neueste Yum-Protokolldatei zuerst kommt?

+0

Sie könnten immer Teile die Reihe in Stücke oder benutze regexp, um th herauszuziehen Die Daten, die Sie möchten. Übergeben Sie es dann an [time.strptime()] (https://docs.python.org/3/library/time.html#time.strptime). Aber es wäre nett, wenn du es zuerst selbst ausprobieren würdest und wenn du auf irgendwelche Fehler stoßen würdest, denen wir helfen könnten :) Die Liste ist nach Namen sortiert, weil 'listdir()' die Dateinamen nur relativ zum Pfad ausgibt Put-in. Wenn Sie Größe oder Datum Daten möchten, verwenden Sie [diese] (http://stackoverflow.com/questions/237079/how-to-get-file-creation-modification-date-times-in-python) – Torxed

+0

' nach Datum geändert ".. Meinst du diese Daten:' 20160113', '20170101' oder diese:' 13. Januar 2016 ',' 22. Dezember 16: 28' ..? – Andersson

+0

@Andersson Er sucht nach "os.stat (path_to_file)" und sortiert die Liste danach. – Torxed

Antwort

1

Sie os.path.getmtime() verwenden können:

logdir = '/var/log' 
yum_logs = [f for f in os.listdir(logdir) if f.startswith('yum.log')] 
sorted(yum_logs, key=lambda f: os.path.getmtime(os.path.join(logdir, f))) 

Sie reverse=True-sorted passieren können die Reihenfolge zu umkehren:

sorted(yum_logs, key=lambda f: os.path.getmtime(os.path.join(logdir, f)), reverse=True) 
2

Sie erhalten Änderungszeit os.stat mit:

logdir = '/var/log' 
files = [f for f in os.listdir(logdir) if f.startswith('yum.log')] 
files.sort(key=lambda x: os.stat(os.path.join(logdir, x)).st_mtime) 
+0

Dies listet die ältesten yum-Logfile zuerst, ich möchte zu neuesten Logfile zuerst in der Liste haben. – willemdh

+0

files.sort (..., reverse = True) –