Et tu ne
voudrais pas le faire en bash ???
Si tu cherches tes fichiers au niveau du client, pourquoi parles-tu de ces sous-répertoires qui y sont peut-être mais qui n'influent/n'impactent en rien ???
Ah ok. Donc ce n'est pas dans le répertoire client qu'il faut contrôler mais dans le sous-dossier "quotidienne" dudit répertoire (et probablement aussi dans les deux autres "annuel" et "mensuel"). Déjà décrire les choses avec
précision évite à tout le monde de perdre du temps à partir dans une mauvaise direction.
Certes, mais Python n'est pas oblugé de tout faire (surtout que comme je l'ai dit, j'ai l'impression qu'on va refaire en Python ce qui t'a donné tant de mal en shell). Rien n'interdit de faire du mix et de te faire aider en Python par le shell. Par exemple tu pourrais faire un script Python qui checke un client (donc il va checker les 3 dossiers "annuel", "mensuel" et "quotidienne" du client) et ensuite, le shell te permet de boucler dans tous les clients et pour chacun d'eux, tu appelles ton script Python ... ou alors si le script Python sait boucler dans ses arguments reçus, on l'appelle une fois avec tous les clients en liste...
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| #!/usr/bin/env python3
import os
def checke_dossier(d=".", fic=()):
yield ("%s/%s" % (d, f) for f in fic if f not in os.scandir(d))
def checke_client(c=".", fic=()):
for sub in ("annuel", "mensuel", "quotidienne"):
yield from checke_dossier("%s/%s" % (c, sub), fic)
# checke_client()
if __name__ == "__main__":
import sys
for c in sys.argv[1:]:
for r in checke_client(c, ("passwd", "group")):
for f in r: print(f)
# for
# if |
Je nomme ce script "toto.py" et je l'appelle ainsi:
./toto.py clientA clientB /volume2/sauvegardes/obm/clientC (donc j'ai des dossiers "clientA", "clientB" et "/volume2/sauvegardes/obm/clientC") et les fichiers cherchés sont (chez-moi) "passwd" et "group". Et il ressort tous les fichiers qui n'y sont pas.. Et si on veut forcer un path (style
path="/volume2/sauvegardes/obm" ben tout dépend du niveau de granularité que l'on veut. Si on veut la granularité la plus fine (des fonctions qui marchent de partout) on le force dans le main
1 2 3 4 5 6 7 8 9
| if __name__ == "__main__":
import sys
path="/volume2/sauvegardes/obm"
for c in sys.argv[1:]:
for r in checke_client("%s/%s" % (path, c), ("passwd", "group")):
for f in r: print(f)
# for
# if |
Partager