2017-02-01 2 views
0

Ich habe Dateinamen in einer Textdatei aufgeführt, die wie folgt aussieht:Python Sortierung nach Datum - spezifische Dateinamen

20160703_042628_b.dat 
20160705_034207_b.dat 
20160706_035020_b.dat 
20160707_032630_b.dat 
20160708_042912_b.dat 
20160709_033232_b.dat 
20160710_034220_b.dat 

Wie kann ich sie nach Datum sortieren und nur die neuesten extrahieren?

+0

Sie durch Namen bedeuten nicht das Datum haben ? Nennen Sie Namen und sortieren Sie sie - 'sort()' oder 'sorted()' - Sie sollten das korrekte Ergebnis erhalten. – furas

Antwort

1

Dies extrahiert die Namen aller Dateien mit der Erweiterung .dat und sortiert sie nach Namen und gibt den ersten Wert (letztes Datum) zurück.

import os 
dat_files = filter(lambda x: x.endswith('.dat'), os.listdir('mydir')) 
dat_files.sort() 
dat_files[0] 

Wenn Sie die Dateinamen in Textdatei erhalten, würde der folgende Code funktionieren.

f = open('dates.txt', 'r') 
x = f.readlines() 
x.sort() 
x[0] 
+0

Ich habe keinen Zugriff auf diese Dateien - sie über eine andere Textdatei zu bekommen .. – Joe

+0

Ich habe den Code für die Textdatei eingegeben. Prost!! –

1
import os 
files = [] 
for file in os.listdir("/path/to/files/"): 
    if file.endswith(".dat"): 
    files.append(file) 
sorted(files, reverse=True)[0] 

Sie müssen die Art umkehren die neueste Datei Pop.

Wenn Sie keinen Zugriff auf das System haben, und haben nur eine Liste der Dateien in einer Datei gedruckt, gelesen und Split-Einträge in eine Liste:

with open('list_of_files.txt','r') as f: 
    file = f.read().splitlines() 
sorted(file, reverse=True)[0] 
+0

Danke, aber keinen Zugriff auf das System. Diese Liste wird nur in einer anderen Datei abgerufen. – Joe

+0

@Joe, ich habe die Antwort hinzugefügt, wie man aus einer Datei liest. – gregory