À l’aide de Python, comment obtenir un tableau d’objets d’informations sur les fichiers, basé sur une recherche dans un système de fichiers?

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

  •  06-07-2019
  •  | 
  •  

Question

Actuellement, j'ai un script bash qui exécute la commande find , comme suit:

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

Ceci obtient une liste des émissions télévisées ajoutées à mon système au cours des 7 derniers jours. Je crée ensuite des liens symboliques pour pouvoir accéder à mes dernières émissions de télévision.

Je cherche à recoder ceci en Python, mais j'ai quelques questions qui semblent me permettre de trouver les réponses à utiliser avec Google (peut-être que je ne cherche pas la bonne chose). Je pense que la meilleure façon de résumer cela est de poser la question suivante:

Comment effectuer une recherche sur mon système de fichiers (dois-je appeler find ?) pour obtenir un tableau d'objets d'informations sur les fichiers (contenant la date de modification, le nom du fichier, etc.) afin de peut les trier en fonction de la date, et d'autres choses semblables?

Était-ce utile?

La solution

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))

Ceci renverra tous les fichiers trouvés trouvés, sous forme de liste de paires (nom de fichier, résultat statistique).

Autres conseils

examine le module os: os.walk est la fonction qui guide le système de fichiers, os.path est le module qui donne le fichier mtime et d’autres informations sur le fichier. os.path définit également de nombreuses fonctions pour analyser et séparer les noms de fichiers.

également intéressant, le module glob définit des fonctions pour "globbing". chaînes (correspondant à une chaîne à l'aide de règles génériques Unix)

à partir de cela, il devrait être facile de créer une liste de fichiers correspondant à certains critères.

  • Vous pouvez utiliser " rechercher " via le " sous-processus " module.
  • Ensuite, utilisez le " fractionné " fonction de chaîne pour disséquer chaque ligne
  • Pour chaque fichier, utilisez le module de système d'exploitation (par exemple, getmtime, etc.) pour obtenir des informations sur le fichier

ou

  • Utilisez le " marcher " et " glob " modules pour obtenir les chemins de fichiers dans les objets
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top