2016-10-12 6 views
0

Ich möchte den Namen der neuesten Datei aus einem bestimmten Verzeichnis in Python bekommen?erhalten Sie den Namen der neuesten Datei in Linux - PYTHON

ich verwendet, um dieses

import os 
import glob 

def get_latest_file(path, *paths): 
    """Returns the name of the latest (most recent) file 
    of the joined path(s)""" 
    fullpath = os.path.join(path, *paths) 
    print fullpath 
    list_of_files = glob.glob(fullpath) 
    if not list_of_files:    
     return None      
    latest_file = max(list_of_files, key=os.path.getctime) 
    _, filename = os.path.split(latest_file) 
    return filename 


if __name__ == "__main__": 
    print get_latest_file('ocr', 'uploads', '*.png') 

Source

Aber ich will der Codename der letzten Datei zurückzukehren, ohne Erweiterung der Datei angeben. Also sagen wir, wenn es jpg, jpeg, png, gif

Ich möchte das Schnipsel, um sie alle zu decken.

Irgendwelche Eingaben?

+1

mit glob.glob können Sie auch die Dateiendung Suffix ersetzen. hast du es probiert: print get_latest_file ('ocr', 'uploads', '*') – hasan

+0

@hasan Das ist die Antwort. Willst du es deutlicher aufschreiben? – bbastu

Antwort

2

mit Ihrem letzten Zeile abrufen Sie nur die Dateien, die mit .png Erweiterung

get_latest_file('ocr', 'uploads', '*.png') 

, wenn Sie alle Dateien nicht in Abhängigkeit von der Erweiterung abrufen möchten, müssen Sie nur Ihre Neben Spezifikation in Code entfernen, um zu glob. glob (''). Dadurch werden alle Dateien in Ihrem Verzeichnis abgerufen. wenn Sie noch eine Erweiterung benötigen, aber es spielt keine Rolle, welche Sie auch mit glob.glob (. *) abrufen könnten, denke ich.

0

Wenn Ihnen die Erweiterung egal ist, reicht eine einfache os.walk-Iteration aus. Sie können dies bei Bedarf auf Filtererweiterungen erweitern.

import os 

all_files = {} 
root = 'C:\workspace\werkzeug-master' 
for r, d, files in os.walk(root): 
    for f in files: 
     fp = os.path.join(root, r, f) 
     all_files[os.path.getmtime(fp)] = fp 
keys = all_files.keys() 
keys.sort(reverse = True) 
print all_files[keys[0]]  
Verwandte Themen