Bonsoir,
Pour mon 1er programme (code ci-dessous), j'ai utilisé des exemples recueillis sur internet et dans le livre "Python 3".
Je suis sous windows XP et espère utiliser le prg sous Debian et sous Ubuntu.

Sous IDLE, le prg fonctionne. Lancé en direct, il indique pour filedialog : "Attribure Error : 'module' objects has no attribute 'filedialog'.

Après une après-midi de recherches, j'ai trouve la commande 'dir' pour lister les attributs de tkinter. En effet, filedialog n'y figure pas.

Donc, deux questions :
1 - Pourquoi IDLE installé automatiquement par python 3.3 accepte l'exécution du prg alors qu'il plante en direct, SVP?
2 - Quelle est l'attribut de tkinter qu'il faut utiliser? Je n'ai pas trouver.

Merci d'avance pour votre aide
Bonne soirée
Luc

Prg :
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
####################################################################################
#      Programme Python 3                                                          #
#      Liste fichiers.py                                                           #
#      Nombre et cumul taille des fichiers dans un répertoire défini (par dossier) #
####################################################################################
 
# Pour un répertoire donné, le prg liste les dossiers et sous-dossiers
# en indiquant, pour chacun, le nombre de fichiers contenus et leurs tailles cumulées
#
# Un dernier affichage donne, pour le répertoire indiqué
#          - le nombre total de fichiers
#          - le cumul des tailles des fichiers
#          - le nombre total de dossiers (y compris la racine si des fichiers ne sont pas dans des dossiers)
 
 
################################
#   Importation des modules
 
import os
 
import tkinter
 
 
################################
#   Définition locale des fonctions
 
def choixrepertoire():                               # Sélection du répertoire
    global rep
    print ("demande rep")
    rep = tkinter.filedialog.askdirectory(initialdir="/", title='Choisissez un repertoire')
    if len(rep) > 0:
        print ("vous avez choisi le repertoire : "+(rep))
        traitementRepertoire(rep)
    return
 
 
 
def traitementRepertoire(path):               # Traitement du répertoire
 
    repertoire = "***"                                    # Initialisation des variables
    nombrerepertoire = 0
    taillerepertoire = 0
    nombredossiers = 0
    sousRepertoire = "***"
    nombre = 0
    taille = 0 
 
    for root, dirs, files in os.walk(path):   # Boucle pour parcourir l'arborescence
        if sousRepertoire != root :                          # Changement de dossier
            if sousRepertoire !="***":
                nombredossiers = nombredossiers + 1
                print ("    ***** Pour le dossier "+(sousRepertoire)+" Nombre "+str(nombre)+"  taille : "+str(taille))
            print (" ")
            sousRepertoire = root
            nombre = 0
            taille = 0
 
 
 
        for i in files:                                           # Traitement des fichiers
            nombre = nombre + 1
            taillefichier = os.path.getsize(os.path.join(root, i))
            taille = taille + taillefichier
            taillerepertoire = taillerepertoire + taillefichier
            nombrerepertoire = nombrerepertoire + 1
 
    nombredossiers = nombredossiers + 1                                    # Fin, donc édition des derniers éléments
    print ("    ***** Pour le dossier : "+(sousRepertoire)+"  nombre : "+str(nombre)+"   taille : "+str(taille))
 
    print (" ")	
    print ("======= Pour le répertoire "+(path))
    print ("                                     Nombre       : "+str(nombrerepertoire))
    print ("                                     Taille      : "+str(taillerepertoire))
    print ("                                     Nb dossiers : "+str(nombredossiers))
    print (" ")	
    print ("TERMINE ******")
    return
 
 
 
################################
#  Corps principal du programme
 
 
fen1 = tkinter.Tk()
tex1 = tkinter.Label(fen1, text='Répertoire des sources')
tex1.pack()
 
rep =''
btnchoixrep = tkinter.Button(fen1, text='Choississez le répertoire SVP', command = choixrepertoire)
btnchoixrep.pack()
 
btnquitter = tkinter.Button(fen1, text='Quitter', command = fen1.destroy)
btnquitter.pack()
fen1.mainloop()