Fichier de courrier électronique et liste de dossiers avec la taille?

0

Je cherche à obtenir une liste de tous les fichiers et dossiers avec leurs tailles (jusqu’au 1er niveau, c’est-à-dire les noms de fichiers et de dossiers avec leurs tailles dans le répertoire actuel) qui m’a été envoyée par courrier électronique via un script Python. Le script a fonctionné, mais la commande ls ci-dessous n’envoie que la taille des fichiers et non la taille des dossiers.

p=subprocess.Popen(['ls', '-1ahs', '/media/ExternalHd/myfolder'], stdout=subprocess.PIPE)
output = p.stdout.read()
DeepeshAgarwal
la source
1
Essaie le du commande au lieu de ls.
Pedro Romano
@PedroRomano a fait cela, mais il ne répertorie que les dossiers et pas les fichiers? Peut-être qu'un indice sur l'utilisation de la liste des tailles de fichiers et de dossiers aiderait ...
DeepeshAgarwal
1
As-tu essayé du -s *?
Pedro Romano
@PedroRomano utilisant du -sh /media/ExternalHd/myfolder/* fonctionne sur le terminal, mais en utilisant p=subprocess.Popen(['du', '-sh', '/media/ExternalHd/myfolder/*'], stdout=subprocess.PIPE) dans un script python affiche une erreur du: cannot access /media/ExternalHd/myfolder/*: No such file or directory
DeepeshAgarwal

Réponses:

1

Vous avez besoin d'un shell pour développer "*", Popen n'y va pas pour vous. Donc, si vous voulez vraiment utiliser Popen, alors

p=subprocess.Popen(['sh', '-c', 'du', '-sh', '/media/ExternalHd/myfolder/*'], stdout=subprocess.PIPE)
lemonsqueeze
la source