Mit Python, wie bekomme ich eine Reihe von Datei Info-Objekten, basierend auf einer Suche nach einem Dateisystem?

StackOverflow https://stackoverflow.com/questions/1617666

  •  06-07-2019
  •  | 
  •  

Frage

Zur Zeit habe ich einen Bash-Skript, das den find Befehl ausgeführt wird, etwa so:

find /storage/disk-1/Media/Video/TV -name *.avi -mtime -7

Dies wird eine Liste von TV-Shows, die zu meinem System in den letzten 7 Tagen wurden hinzugefügt. Ich habe dann gehen auf einige symbolischen Links zu erstellen, damit ich zu meinen neuesten TV-Shows bekommen.

Ich bin auf der Suche neu Code dies in Python, aber ich habe ein paar Fragen, die ich die Antworten zu finden scheinen, Google für die Verwendung von (vielleicht bin ich nicht für die richtige Suche). Ich denke, der beste Weg, dies zu summieren ist die Frage zu stellen:

Wie kann ich eine Suche auf meinem Dateisystem durchzuführen (soll ich find nennen?), Die mir eine Reihe von Datei Info-Objekten gibt (mit dem Datum ändern, Dateinamen, etc.), so dass ich sie auf Datum sortieren lassen können, und andere solche Dinge?

War es hilfreich?

Lösung

import os, time

allfiles = []
now = time.time()

# walk will return triples (current dir, list of subdirs, list of regular files)
# file names are relative to dir at first
for dir, subdirs, files in os.walk("/storage/disk-1/Media/Video/TV"):
    for f in files:
        if not f.endswith(".avi"):
            continue
        # compute full path name
        f = os.path.join(dir, f)
        st = os.stat(f)
        if st.st_mtime < now - 3600*24*7:
            # too old
            continue
        allfiles.append((f, st))

Damit werden alle Dateien zurück, die auch wieder finden, als eine Liste von Paaren (Dateiname, stat Ergebnis).

Andere Tipps

schauen Sie in Modul os: os.walk ist die Funktion, die das Dateisystem geht, os.path das Modul, das die Datei mtime und andere Dateiinformationen gibt. auch definiert os.path eine Vielzahl von Funktionen für die Analyse und Spalten Dateinamen.

auch von Interesse, definiert Modul glob eine Funktion für "Globbing" strings (ein String-Matching mit Unix-Wildcards Regeln)

von diesem, eine Liste der Datei bauen einige Kriterium passende sollte einfach sein.

  • Sie können „finden“ durch das „Subprozess“ Modul verwenden.
  • Danach verwenden Sie die „Split“ String-Funktion jede Zeile
  • sezieren
  • Für jede Datei, verwenden Sie das OS-Modul (z getmtime etc.) Dateiinformationen
  • bekommen

oder

  • Verwenden Sie den „walk“ und „glob“ Module die Dateipfade in Objekte zu erhalten
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top