[Python] Parcourir un dossier
Fermé
Bonjour à tous
Je voudrais savoir comment je pourrais faire pour créer un bouton (ça je sais le faire....) qui recrée la fonction "Parcourir". Je voudrais pourvoir récupérer tous les fichiers '.py' d'un dossier pour en extraire toutes les donées (ça je sais le faire aussi).
Il me manque juste la foncion "Parcourir".
D'après ce que j'ai pu lire sur le net, doit falloir installer d'autres bibliothèques ais je ne sais pas lesquelles.
Si quelqu'un avait une ch'tite idée, ce serait sympa.
Merci beaucoup
Je voudrais savoir comment je pourrais faire pour créer un bouton (ça je sais le faire....) qui recrée la fonction "Parcourir". Je voudrais pourvoir récupérer tous les fichiers '.py' d'un dossier pour en extraire toutes les donées (ça je sais le faire aussi).
Il me manque juste la foncion "Parcourir".
D'après ce que j'ai pu lire sur le net, doit falloir installer d'autres bibliothèques ais je ne sais pas lesquelles.
Si quelqu'un avait une ch'tite idée, ce serait sympa.
Merci beaucoup
A voir également:
- Parcourir dossier python
- Dossier appdata - Guide
- Mettre un mot de passe sur un dossier - Guide
- Citizen code python avis - Accueil - Outils
- Dossier démarrage - Guide
- Dossier rar - Guide
16 réponses
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 11:34
3 avril 2006 à 11:34
Il me semble que c'est tkFileDialog.askopenfilename()
exemple:
exemple:
import Tkinter import tkFileDialog root = Tkinter.Tk() filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file') print filename
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 11:00
3 avril 2006 à 11:00
Tu utilises quel libairies graphique ?
Tkinter ?
Dans ce cas, il n'y a rien à installer de plus: C'est installé en standard avec Python.
Pour tkinter, il y a des dialogue prédéfinis assez faciles à utiliser.
J'ai mis des exemples là:
https://sebsauvage.net/python/snyppets/index.html#tkinter_dialogs
Tkinter ?
Dans ce cas, il n'y a rien à installer de plus: C'est installé en standard avec Python.
Pour tkinter, il y a des dialogue prédéfinis assez faciles à utiliser.
J'ai mis des exemples là:
https://sebsauvage.net/python/snyppets/index.html#tkinter_dialogs
Utilisateur anonyme
3 avril 2006 à 11:27
3 avril 2006 à 11:27
J'ai une petite question concernant le code suivant :
"file = tkFileDialog.askopenfile(parent=root,mode='rb',title='Please select a file')
if (file != None) :
file_to_read = file
print file_to_read
data = file.read()
file.close()"
Y'a pas une solution qui me permettrait de ne récupérer que le nom du fichier sélectionné plutôt que cette ligne là :
"<open file '/home/aurelien/devel/python/test/test1.mdm', mode 'rb' at 0xb620d968>".
Parce que je voudrais utliser le nom de fichier sélectionné dans un de mes codes mais avec cette syntaxe là, forcément ça plante.
Merci
"file = tkFileDialog.askopenfile(parent=root,mode='rb',title='Please select a file')
if (file != None) :
file_to_read = file
print file_to_read
data = file.read()
file.close()"
Y'a pas une solution qui me permettrait de ne récupérer que le nom du fichier sélectionné plutôt que cette ligne là :
"<open file '/home/aurelien/devel/python/test/test1.mdm', mode 'rb' at 0xb620d968>".
Parce que je voudrais utliser le nom de fichier sélectionné dans un de mes codes mais avec cette syntaxe là, forcément ça plante.
Merci
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 13:23
3 avril 2006 à 13:23
Mon ton code ?
Voila mon code
J'importe un module que j'ai créé (et qui fonctionne) et je passe le nom du fichier sélectionné dans ma fonction Read_file().
Une fois que ma fonction Read_file() est terminée, j'aimerais que l'explorateur de fichier se ferme.
Mais quand je fais "filename.close()" j'ai l'erreur "AttributeError: 'str' object has no attribute 'close' "
import Tkinter
import tkFileDialog
from Open_file import *
i = 0
root = Tkinter.Tk()
filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file')
if (filename != None) :
Read_File(filename)
filenale.close()
J'importe un module que j'ai créé (et qui fonctionne) et je passe le nom du fichier sélectionné dans ma fonction Read_file().
Une fois que ma fonction Read_file() est terminée, j'aimerais que l'explorateur de fichier se ferme.
Mais quand je fais "filename.close()" j'ai l'erreur "AttributeError: 'str' object has no attribute 'close' "
import Tkinter
import tkFileDialog
from Open_file import *
i = 0
root = Tkinter.Tk()
filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file')
if (filename != None) :
Read_File(filename)
filenale.close()
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 14:44
3 avril 2006 à 14:44
filename c'est le nom du fichier (une chaîne de caractères).
ça n'est pas un object "fichier" qu'on peut fermer avec un .close().
ça n'est pas un object "fichier" qu'on peut fermer avec un .close().
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 14:57
3 avril 2006 à 14:57
1)
filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file')
filename contient le nom du fichier sélectionné.
2)
mafonction(filename)
3)
Tu n'a rien à fermer.
Dès que l'utilisateur clic sur "Ok", la foinction askopenfilename() ferme la fenêtre de dialogue et te donne le nom du fichier.
filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file')
filename contient le nom du fichier sélectionné.
2)
mafonction(filename)
3)
Tu n'a rien à fermer.
Dès que l'utilisateur clic sur "Ok", la foinction askopenfilename() ferme la fenêtre de dialogue et te donne le nom du fichier.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 15:11
3 avril 2006 à 15:11
il reste une fenêtre tk
Si c'est toi qui a ouvert la fenêtre tk, c'est à toi de la fermer.
Si veux que ton programme quitte, il faut faire sys.exit(0)
Si c'est toi qui a ouvert la fenêtre tk, c'est à toi de la fermer.
Si veux que ton programme quitte, il faut faire sys.exit(0)
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 15:29
3 avril 2006 à 15:29
Ben c'est bizarre, parceque moi quand je fais:
Je n'ai aucune fenêtre qui reste.
Quelquepart dans ton programme, il n'y a pas une ligne contenant un appel à .mainloop() ?
import Tkinter import tkFileDialog root = Tkinter.Tk() filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file') print filename
Je n'ai aucune fenêtre qui reste.
Quelquepart dans ton programme, il n'y a pas une ligne contenant un appel à .mainloop() ?
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 15:46
3 avril 2006 à 15:46
Avec ton code, j'ai une fenetre tk qui apparait derriere l explorateur, mais des que je clique sur OK, elle disparait.
Ben c'est pas ce que tu voulais ?
Que la fenêtre disparaisse une fois le fichier sélectionné ?
Ben c'est pas ce que tu voulais ?
Que la fenêtre disparaisse une fois le fichier sélectionné ?
Si, c'est ce que je voulais. Mais avec mon code, la fenetre tk reste toujours.
"import Tkinter
import tkFileDialog
from Open_file import *
root = Tkinter.Tk()
filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file')
Read_File(filename)"
J ai vérifié, je n'ai pas de .mainloop dans mon module.
Je ne comprends pas
"import Tkinter
import tkFileDialog
from Open_file import *
root = Tkinter.Tk()
filename = tkFileDialog.askopenfilename(parent=root,title='Please select a file')
Read_File(filename)"
J ai vérifié, je n'ai pas de .mainloop dans mon module.
Je ne comprends pas
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 16:18
3 avril 2006 à 16:18
J'ai fait la même chose, mais quand j'ai terminé de sélectionner le fichier, la fenêtre se ferme.
Si ta fenêtre reste ouvert, ça veut dire que ta fonction Read_File() n'est pas encore terminée.
La fenêtre est obligatoire car toute fenêtre tkinter (ou fenêtre de dialogue) a besoin d'une fenêtre mère.
S'il n'y en a pas, tkinter en créé une.
Si ta fenêtre reste ouvert, ça veut dire que ta fonction Read_File() n'est pas encore terminée.
La fenêtre est obligatoire car toute fenêtre tkinter (ou fenêtre de dialogue) a besoin d'une fenêtre mère.
S'il n'y en a pas, tkinter en créé une.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 16:30
3 avril 2006 à 16:30
C'est ta fonction Read_File() qui doit poser problème.
Je ne sais pas ce qu'elles contient, je ne peux donc pas te dire ce qui cloche dedans.
Je ne sais pas ce qu'elles contient, je ne peux donc pas te dire ce qui cloche dedans.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 16:47
3 avril 2006 à 16:47
Cause probables au problème:
- Soit ta fonction Read_File() n'est pas terminée.
- Soit elle utilise elle-aussi des fonctions tkinter (ce qui est fort possible si tu utilise pylab/matplotlib dedans).
- Soit ta fonction Read_File() n'est pas terminée.
- Soit elle utilise elle-aussi des fonctions tkinter (ce qui est fort possible si tu utilise pylab/matplotlib dedans).
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
>
Utilisateur anonyme
3 avril 2006 à 17:23
3 avril 2006 à 17:23
C'est ça !
Je te conseillerais de réorganiser ton code:
Actuellement, c'est la routine qui affiche la fenêtre de sélection du fichier qui appelle le programme principale (celui qui calcul et affiche les fenêtres):
dialogue sélection fichier ----> lecture données et affichage.
ça devrait être l'inverse:
Programme principal -----> dialogue sélection fichier
calcul
affichage.
Je te conseillerais de réorganiser ton code:
Actuellement, c'est la routine qui affiche la fenêtre de sélection du fichier qui appelle le programme principale (celui qui calcul et affiche les fenêtres):
dialogue sélection fichier ----> lecture données et affichage.
ça devrait être l'inverse:
Programme principal -----> dialogue sélection fichier
calcul
affichage.
Utilisateur anonyme
>
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
3 avril 2006 à 17:26
3 avril 2006 à 17:26
OK
je vais essayer de changer ça
merci encore
je vais essayer de changer ça
merci encore
Utilisateur anonyme
>
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
3 avril 2006 à 17:29
3 avril 2006 à 17:29
Bon l'essai n'st pas concluant
J'ai importé ma fonction d'exploration de fichier dans le code qui fait toutela procédure de calcul.
Mais la fenêtre Tk est toujours là.
Je me demande s'il n'y a pas un conflit avec la fonction show() de pylab.
J'ai importé ma fonction d'exploration de fichier dans le code qui fait toutela procédure de calcul.
Mais la fenêtre Tk est toujours là.
Je me demande s'il n'y a pas un conflit avec la fonction show() de pylab.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 17:41
3 avril 2006 à 17:41
Je me demande s'il n'y a pas un conflit avec la fonction show() de pylab.
C'est possible.
A mon avis:
Ton programme n'a pas de fenêtre principal, donc quand pylab/matplotlib veut faire un graphe, il créé sa propre fenêtre principale (et tu n'a donc aucun contrôle dessus).
Tu doit créer la fenêtre principale (root) pour pouvoir la fermer.
C'est possible.
A mon avis:
Ton programme n'a pas de fenêtre principal, donc quand pylab/matplotlib veut faire un graphe, il créé sa propre fenêtre principale (et tu n'a donc aucun contrôle dessus).
Tu doit créer la fenêtre principale (root) pour pouvoir la fermer.
C'est vrai que je n'ai pas créé de fenêtre principale. Voila mon code d'affichage:
"def Trace_Graphe(matrice, param, nb_line_param) :
x_start = min(matrice[param[0]])
x_end = max(matrice[param[0]])
y_start = min(matrice[param[3]])
y_end = max(matrice[param[3]])
axe1 = subplot(111)
semilogy(matrice[param[0]], matrice[param[3]], 'r')
axis([x_start, x_end, y_start, y_end])
xlabel(param[0])
ylabel(param[3])
axe2 = twinx()
semilogy(matrice[param[0]], matrice[param[2]], 'b')
ylabel(param[2])
axe2.yaxis.tick_right()
show()"
Faudrait que je la créé à quel niveau?
Et comment l'utiliser?
Merci
"def Trace_Graphe(matrice, param, nb_line_param) :
x_start = min(matrice[param[0]])
x_end = max(matrice[param[0]])
y_start = min(matrice[param[3]])
y_end = max(matrice[param[3]])
axe1 = subplot(111)
semilogy(matrice[param[0]], matrice[param[3]], 'r')
axis([x_start, x_end, y_start, y_end])
xlabel(param[0])
ylabel(param[3])
axe2 = twinx()
semilogy(matrice[param[0]], matrice[param[2]], 'b')
ylabel(param[2])
axe2.yaxis.tick_right()
show()"
Faudrait que je la créé à quel niveau?
Et comment l'utiliser?
Merci
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 17:46
3 avril 2006 à 17:46
Je n'ai pas le temps de regarder, mais dans les exemples:
http://matplotlib.sourceforge.net/matplotlib_examples_0.87.1.zip
Il y a 2 exemples avec tkinter:
embedding_in_tk.py
embedding_in_tk2.py
En gros, tu créé ta fenêtre, tu créé le widget matplotlib en lui donnant comme parent ta fenêtre.
Comme ça tu as un contrôle total.
http://matplotlib.sourceforge.net/matplotlib_examples_0.87.1.zip
Il y a 2 exemples avec tkinter:
embedding_in_tk.py
embedding_in_tk2.py
En gros, tu créé ta fenêtre, tu créé le widget matplotlib en lui donnant comme parent ta fenêtre.
Comme ça tu as un contrôle total.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
3 avril 2006 à 17:46
3 avril 2006 à 17:46
En fait, pylab est une version trop simplifiée de matplotlib qui s'occupe de beaucoup de choses, comme la gestion des fenêtres (le fameux show()).
Donc, on a pas le contrôle de tout ça.
Il faut utiliser matplotlib.
Donc, on a pas le contrôle de tout ça.
Il faut utiliser matplotlib.
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
>
Maki
2 févr. 2007 à 08:37
2 févr. 2007 à 08:37
Tu devrais poser ta questions dans une nouvelle discussion pour éviter de mélanger les réponses.
Pour répondre à ta question, oui, il y a plusieurs moyens:
https://sebsauvage.net/python/snyppets/index.html#listdir
Pour répondre à ta question, oui, il y a plusieurs moyens:
https://sebsauvage.net/python/snyppets/index.html#listdir
3 avril 2006 à 11:41
Mais ce sera parfait pour ce que je fais.
Merci encore
3 avril 2006 à 11:58
Je ne peux plus fermer la fenêtre maintenant .
Il me dit : "AttributeError: 'str' object has no attribute 'close' "
Comment je peux faire?
Merci