Tout,
Quel est le meilleur moyen de vérifier s'il y a des données dans un répertoire avant de le supprimer? Je suis en train de parcourir quelques pages pour trouver des images à l’aide de wget et bien sûr, chaque page ne comporte pas d’image, mais le répertoire est toujours créé.
dir = 'Files\\%s' % (directory)
os.mkdir(dir)
cmd = 'wget -r -l1 -nd -np -A.jpg,.png,.gif -P %s %s' %(dir, i[1])
os.system(cmd)
if not os.path.isdir(dir):
os.rmdir(dir)
Je voudrais tester pour voir si un fichier a été déposé dans le répertoire après sa création. Si rien n'est là ... supprimez-le.
Merci, Adam
Essayer:
if not os.listdir(dir):
print "Empty"
ou
if os.listdir(dir) == []:
print "Empty"
Cela peut maintenant être fait plus efficacement dans Python3.5 + , puisqu'il n'est pas nécessaire de créer une liste du contenu du répertoire pour voir si son contenu est vide:
import os
def is_dir_empty(path):
return next(os.scandir(path), None) is None
Que faire si vous avez vérifié si le répertoire existe et s'il y a du contenu dans le répertoire ... quelque chose comme
if os.path.isdir(dir) and len(os.listdir(dir)) == 0:
os.rmdir(dir)
Si les répertoires vides sont déjà créés, vous pouvez placer ce script dans votre répertoire externe et l'exécuter:
import os
def _visit(arg, dirname, names):
if not names:
print 'Remove %s' % dirname
os.rmdir(dirname)
def run(outer_dir):
os.path.walk(outer_dir, _visit, 0)
if __== '__main__':
outer_dir = os.path.dirname(__file__)
run(outer_dir)
os.system('pause')
empty = False
for dirpath, dirnames, files in os.walk(dir):
if files:
print("Not empty !") ;
if not files:
print("It is empty !" )
empty = True
break ;
Les autres réponses mentionnées ici sont pas rapide parce que, si vous voulez utiliser la fonction
os.listdir()
habituelle, si le répertoire contient trop de fichiers, il ralentira ur le code et si vous utilisez la méthodeos.rmdir( )
pour essayer de détecter l'erreur, alors il va simplement supprimer ce dossier. Ce n'est peut-être pas quelque chose que vous voulez faire si vous voulez juste vérifier si vous êtes vide.