J'ai plusieurs répertoires et je veux que les répertoires de plus de 7 jours soient supprimés. J'ai du code déjà implémenté mais ça ne semble pas fonctionner. Quelqu'un peut-il voir où je vais mal?Supprimer Anciens répertoires en Python
def delete_sandbox():
for directories in os.listdir(os.getcwd()):
if not os.path.isdir(directories) or not os.stat(directories).st_ctime < time.time()-(7*24*3600):
continue
os.chdir(directories)
drop_sandbox()
os.chdir(rootDir)
os.system("sudo rm -rf "+directories)
print 'Folders older than 7 days old dropped and removed'
Merci pour toute aide
La baisse de dossiers, mais ne supprimez sandboxes pas. Je veux que le programme entre dans chacun de ces dossiers, dépose le bac à sable, retourne dans le répertoire racine et supprime tous les anciens répertoires. Quand je fais cela, les dossiers existent toujours.
Cette fonction a également fonctionné lorsque les répertoires étaient supprimés par la date de chaîne stockée dans le nom du dossier. Mais maintenant que j'essaie d'obtenir l'horodatage, il a cessé de fonctionner.
J'ai testé le 'rm -rf'+directories
et il ne supprime pas les anciens dossiers. Lorsque je tente shutil.rmtree
je reçois le message d'erreur:
Traceback (most recent call last):
File "yep.py", line 21, in <module>
delete_sandbox()
File "yep.py", line 18, in delete_sandbox
shutil.rmtree(directories)
File "/home/build/workspace/downloads/Python-2.6.4/Lib/shutil.py", line 208, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "/home/build/workspace/downloads/Python-2.6.4/Lib/shutil.py", line 206, in rmtree
names = os.listdir(path)
OSError: [Errno 2] No such file or directory: 'Debug'
est-il un autre moyen de supprimer ces dossiers? Je l'ai fonctionné, j'ai utilisé shutil.rmtree
et tout semblait fonctionner. Merci pour toute aide. Le code est modifié:
def delete_sandbox():
for directories in os.listdir(os.getcwd()):
if not os.path.isdir(directories) or not os.stat(directories).st_ctime < time.time()-(sbox_age):
continue
os.chdir(directories)
drop_sandbox()
os.chdir(rootDir)
shutil.rmtree(directories)
print 'Sandboxes older than 7 days old dropped and removed'
delete_sandbox()
qu'est-ce que cela signifie * ne semble pas fonctionner *? obtenez-vous un message d'erreur? – SilentGhost
Cela échouerait si un nom de répertoire contenait des espaces (à l'appel os.system) ou si le répertoire en cours lors de l'entrée n'était pas 'rootDir'. Avez-vous une erreur, et si oui, quoi et où? Ou comportement inattendu, et si oui quoi et où? Quelques «impressions» nous donneront plus d'informations (vous nous donnez actuellement environ 0 bits ;-). –
Suggestion générale/avertissement, lors de l'appel au système, en particulier lorsque 'rm' est impliqué. Donnez à votre fonction une option d'exécution à vide True par défaut qui imprime les commandes système qu'elle exécuterait. – MattH