Bonjour à tous
Voila mon sujet
J'ai créé un petit programme dans lequel j'effectue une sauvegarde des fichiers utilisés
fichiers de base de données, de photos, texte .....etc
C'est un programme simple pour des gens peu à très peu habituer à l'informatique.
Ce programme de sauvegarde ouvre un fenêtre sur laquelle apparait un bouton 'Insérer la clé usb'
on click dessus on insère le clé le programme gére l'insertion de la clé et donne son nom de lecteur
puis on click sur le bouton 'Démarrer la sauvegarde'
La sauvegarde s'effectue SAUF qu'elle plante car dans les noms de fichiers et de répertoire il y a des accents
c'est donc un problème de codage
Pour faire plusieurs manipulations sans retirer la clé puis la remettre
j'ai modifier le programme pour que la sauvegarde démarre toute seule et la miracle tous les fichiers et répertoire sont copier
à merveille sans problème d'accent ni autre
et si j' exécute le programme comme il doit l'être en réalité problème de plantage à cause des accents.
Pourquoi ?
voici le bout de code qui gère la sauvegarde
Si quelqu'un a une idée elle serait la bien venu
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
42
43 # La fonction onSvg est lancée lorsque l'utilisateur clikc sur le bouton 'Démarrer la Sauvegarde' def onSvg(self, evt): self.pathdest = self.pathdest + ':\\' + self.path[self.path.find(self.path_courrant):] self.If_Exist_Dir(self.pathdest) self.Files_Count(self.path_def) self.gauge.SetRange(self.count_files) self.Svg_Files(self.path_def) def Svg_Files(self, path): pt = path for i in range (len(os.listdir(pt))): pth = pt + '\\' + os.listdir(pt)[i] if os.path.isfile(pth): print 'c est un fichier =', os.listdir(pt)[i] ptdest = self.pathdest + '\\' + pt[(pt.find(self.path_courrant) + \ len(self.path_courrant)):] + '\\' + \ os.listdir(pt)[i] self.Copy_Files(pth, ptdest) elif os.path.isdir(pth): ptt = pt + '\\' + os.listdir(pt)[i] self.If_Exist_Dir(self.pathdest + pt[(pt.find(self.path_courrant) + \ len(self.path_courrant)):] + '\\' + \ os.listdir(pt)[i].decode('cp1252')) self.Svg_Files(ptt) return def Copy_Files(self, pts, ptd): self.copy_files += 1 self.gauge.SetValue(self.copy_files) try: shutil.copy(pts, ptd) except shutil.Error, e: print e except IOError as e: print e.strerror def If_Exist_Dir(self, pt): encoder = locale.getpreferredencoding() if os.path.exists(pt) == False: os.mkdir(pt.encode('ISO-8859-1'))
Si le code est un peu bordélique c'est que j'ai fait tellement de ma,ip que j'ai du oublier de retirer le morceau en trop
Merci d'avance à tous
Partager