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

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 quelqu'un a une idée elle serait la bien venu

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