Qui consomme moin que walk?

a marqué ce sujet comme résolu.

Bonjour,

je travaille en ce moment sur pas mal de script qui consistent très souvent à :

  • lister des fichier dans des sous-dossiers
  • parcourir ces fichiers, les ouvrir
  • trouver une information clef à l'intérieur

à cause des sous-dossier, pour simplifier mon programme, j'utilise os.walk.

Seul problème : je dois lister beaucoup de fichiers, vraiment beaucoup.

du coup, un regard sur sudo iotop me dit :

log iotop

J'ai bien pensé à faire un subprocess qui exécute find mon_dossier_racine -type -f mais j'ai un peu peur pour la conso mémoire mais a priori c'est sur ça que je me dirige.

Y existe-t-il une autre solution "full python"?

Du coup ça nous donne une solution temporaire pour Python < 3.5, qui sera intégrée à la lib standard dans la version qui va sortir dans quelques mois : https://pypi.python.org/pypi/scandir .

PS : Par ailleurs je pense pas qu'une solution à base de subprocess.Popen soit si consommatrice que ça en mémoire. En principe tu peux consommer la sortie de ta commande find au fur et à mesure que celle-ci est produite, ligne par ligne, sans être obligé de tout stocker en mémoire.

Dans tous les cas, je me pencherais en premier lieu vers scandir, parce que c'est la solution la plus pythonique.

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte