Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
comparefichiersrep [2010/04/11 11:56] tyrtamos |
comparefichiersrep [2010/04/11 12:54] tyrtamos |
||
---|---|---|---|
Ligne 26: | Ligne 26: | ||
===== Code proposé ===== | ===== Code proposé ===== | ||
+ | Voilà le code proposé (il est auto-documenté). | ||
+ | |||
+ | Seule particularité: | ||
+ | |||
+ | \\ | ||
<code python> | <code python> | ||
# | # | ||
Ligne 116: | Ligne 121: | ||
except: | except: | ||
raise # redéclenche l' | raise # redéclenche l' | ||
- | entrees.sort(comp) | + | entrees.sort(comp) |
nfics = [] | nfics = [] | ||
for entree in entrees: | for entree in entrees: | ||
Ligne 126: | Ligne 131: | ||
############################################################################## | ############################################################################## | ||
def comparefics(rep1, | def comparefics(rep1, | ||
- | """ | + | """ |
+ | et renvoie: | ||
+ | => 0 = contenus identiques | ||
+ | => 1 = contenus différents | ||
+ | => 2 = échec de la comparaison (droit de lecture insuffisant p. ex.) | ||
+ | => 3 = le fichier sélectionné de rep1 est absent de rep2 | ||
+ | => 4 = le fichier sélectioné de rep2 est absent de rep1 | ||
+ | génère une exception si la lecture des répertoires échoue | ||
+ | | ||
try: | try: | ||
- | | + | |
+ | nf2 = listefics(rep2, selections, exclusions) | ||
except: | except: | ||
raise # redéclenche l' | raise # redéclenche l' | ||
R = [] | R = [] | ||
- | for nf in nfics: | + | for nf in nf1: |
+ | print nf | ||
nfc1 = os.path.join(rep1, | nfc1 = os.path.join(rep1, | ||
- | nfc2 = os.path.join(rep2, | + | |
- | if os.path.exists(nfc2): | + | |
try: | try: | ||
res = comparefic(nfc1, | res = comparefic(nfc1, | ||
if res: | if res: | ||
- | R.append([nf, | + | R.append([nf, |
else: | else: | ||
- | R.append([nf, | + | R.append([nf, |
except: | except: | ||
- | R.append([nf, | + | R.append([nf, |
else: | else: | ||
- | R.append([nf, | + | R.append([nf, |
+ | for nf in nf2: | ||
+ | if nf not in nf1: | ||
+ | R.append([nf, | ||
+ | R.sort(comp, | ||
return R | return R | ||
</ | </ | ||
- | Et voilà comment on utilise (comparaison des contenus des fichiers .doc entre les 2 répertoires): | + | \\ |
+ | Et voilà comment on utilise (comparaison des contenus des fichiers | ||
<code python> | <code python> | ||
Ligne 155: | Ligne 175: | ||
rep2 = r" | rep2 = r" | ||
+ | msg = [u" | ||
try: | try: | ||
- | R = comparefics(rep1, | + | R = comparefics(rep1, |
for nf, r in R: | for nf, r in R: | ||
- | print nf, r | + | print nf, msg[r] |
except: | except: | ||
print u" | print u" | ||
</ | </ | ||
+ | \\ | ||
Ce qui affichera, par exemple: | Ce qui affichera, par exemple: | ||
< | < | ||
- | fichier1.doc | + | fichier1.doc |
- | fichier2.doc | + | fichier2.doc |
- | fichier3.doc | + | fichier3.doc |
- | fichier4.doc | + | fichier4.doc |
- | fichier5.doc absent | + | fichier5.doc absent |
+ | fichier6.doc absent du 1er rép. | ||
+ | </ | ||
+ | |||
+ | Dans cet affichage, les résultats sont triés par nom de fichier (tri alphabétique français). Si on veut un tri par code résultat, il suffit d' | ||
+ | |||
+ | <code python> | ||
+ | R.sort(key=lambda v: v[1]) # tri selon r | ||
</ | </ | ||