Un an après l'installation difficile de la Corbeille dans les Ibays http://forums.ixus.net/viewtopic.php?f=19&t=43682#p275099, nous nous sommes posés la question du nettoyage automatique de celle-ci puisque chaque fois qu'un fichier est ouvert, un fichier temporaire est créé puis supprimé par le logiciel à la fermeture du fichier.
Il se retrouve donc dans la corbeille.
Il faut donc bien nettoyer celle-ci de temps à autre.
Voici un petit programme écrit en Python par des néophytes qui a l'air de bien fonctionner.
On l’automatisera par cron, bien entendu.
Dans l'attente de vos remarques.
Bonne après-midi.
- Code: Tout sélectionner
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import os.path
import re
import sys
def listdirectory(path):
fichier=[]
for root, dirs, files in os.walk(path):
for i in files:
fichier.append(os.path.join(root, i))
return fichier
#La fonction os.walk(path) crée un générateur de triplets (root, dirs, files) dans l'arborescence de path.
#Un triplet est généré par répertoire visité.
# root représente le chemin d'accès du répertoire visité.
# dirs est la liste des sous-répertoires du répertoire root
# files est la liste des fichiers du répertoire root.
def listdirectory_marco(path):
liste_fichier_supprimes = []
list_repertoires_supprimes = []
for root, dirs, files in os.walk(path):
for element in files:
if ".~lock." in element or (os.path.isfile(os.path.join(root, element)) and os.path.getsize(os.path.join(root, element))) == 0: #première lettre égale à "TILD" ou (fichier + égal à 0 Kilo)
if dirs: #si les sous-repertoires enfants sont existants alors on incrémente la liste des fichiers à supprimer
liste_fichier_supprimes.append(os.path.join(root, element))
os.remove(os.path.join(root, element)) #suppression
else: #si les sous-repertoires enfants sont inexistants alors on incrémente la liste des fichiers à supprimer
#et on remonte d'un cran
liste_fichier_supprimes.append(os.path.join(root, element))
os.remove(os.path.join(root, element)) #suppression
print ""
print "fichier"
print element
print "root"
print root
list_mon_repertoire_split = root.split(os.sep) #os.sep séparateur systeme /\
print "list_mon_repertoire_split"
print list_mon_repertoire_split
mon_chemin = list_mon_repertoire_split[0] #dbut de mon chemin
#for i in range(len(list_mon_repertoire_split), 0): #sens décroissant
for i in range(len(list_mon_repertoire_split)): #sens décroissant
for element in (list_mon_repertoire_split):
mon_chemin = os.sep.join(list_mon_repertoire_split) #on concatène avec "os.sep" = "\"
list_mon_repertoire_split.pop() #on vire le dernier élément de la liste pour le tour suivant en plus court
print ""
print "mon_chemin"
print mon_chemin
try:
os.rmdir(mon_chemin) #supprime le répertoire path si celui-ci est vide
list_repertoires_supprimes.append(mon_chemin)
except:
titi = 2
return liste_fichier_supprimes, list_repertoires_supprimes
if __name__ == "__main__":
# 1 - Lister tous les fichiers et chemins présents au chemin_recycle_bin: on met ça dans un tableau
# 2 - Pour chaque ligne du tableau, vérifier si le fichier commence par ~ TILD
#si oui, vérifier qu'il n'y a pas d'autre fichiers dans ce répertoire
#si oui, supprimer le fichier "TILD" et les répertoires parents qui ne contiennent rien
#"infos systeme"
print "infos systeme"
print "version de python:"
print sys.version_info
chemin_fichier_courant = sys.argv[0]
print "chemin_fichier_courant"
print chemin_fichier_courant
# le répertoire [b]nom_ibay[/b] est à remplacer par celui où se trouve la corbeille
mon_array_de_array = listdirectory_marco("/home/e-smith/files/ibays/[b]nom_ibay[/b]/files/Corbeille")
print "ma_liste_supprimee"
print mon_array_de_array[0]
print "mes_repertoires_supprimes"
print mon_array_de_array[1]
[edit=Muzo]La balise code c'est bien aussi
