Bonjour,
J'ai un problème dans un script qui doit effacer des fichiers en fonction de la comparaison de deux listes de chemins d'accès aux fichiers.
J'ai un problème avec le os.remove(fichier_suppr) car je pense que j'ai des backslash qui posent problème dans ma variable fichier_suppr. Cette variable contient des chemins ou les backslash ne sont pas doublés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 import os.path import re garder = open('D:\\Etudes\\donnes_CFAL_SUD\\donnees_liste_agarder.txt', 'r') agarder = garder.readlines() actuel = open('D:\\Etudes\\donnes_CFAL_SUD\\donnees_liste_tout.txt', 'r') aactuel = actuel.readlines() m = 0 x = 0 for i in aactuel: valid = 0 for j in agarder: ###Nous extrayons le nom du fichier fichier_agarder = os.path.basename(j) fichier_actuel = os.path.basename(i) ##Nous comparons les nom de fichiers de la liste aactuel ? la liste agarder ##si la variable valid reste if fichier_agarder == fichier_actuel: valid = 1 x += 1 fichier_garde = re.sub('\n' , '', i) print 'on garde' + fichier_garde if valid == 0: ##nous extrayons le chemin du fichier ? supprimer sans l'extension fichier_suppr = re.sub('\n' , '', i) ##suppression des fichiers not?s en doublons try : os.remove(fichier_suppr) print 'le fichier que l on vire est: ' + fichier_suppr m += 1 except: print 'le fichier n a pas ete supprime:' + fichier_suppr ##suppression des r?pertoires vides ##nous recuperons dans un premier temps le nom du repertoire sans le nom du fichier ##nous supprimons le repertoire si il est vide ## repertoire = os.path.dirname(i) ## print repertoire ## os.rmdir(repertoire) print 'on vire ' + str(m) + ' fichiers' print 'on garde: ' + str(x) + ' fichiers '
D'ou ma question "Comment doubler les backslash \\ dans une variable de type chaine?" j'ai vu qu'il existe des raw imput mais je n'ai pas trouvé comment les appliquer à une variable.
merci
Partager