Je suis un cours de Python qui n'est pas celui du site. On me demande de stocker le contenu de fichiers textes dans des variables, via un dictionnaire. Chaque contenu doit être dans une variable portant le nom du fichier. J'ai donc pensé à mettre le nom du fichier en clé, et le contenu correspondant en valeur. Seulement, je veux imprimer le dictionnaire pour être sûr que l'association a bien fonctionné, mais je n'y arrive pas. JLe problème, c'est que Visual Studio Code ne trouve pas de bugs dans mon code, même en syntaxe. Simplement... ça n'imprime pas. AU mieux, j'obtiens une accolade vide. Pouvez-vous m'aider ?
filenames = glob.glob("*.txt")
for file in filenames :
with open(file, 'r') as f:
kliste = [f.read()]
kliste.append(file)
dico = {k:v for k,v in zip(kliste, f.read())}
for k, v in dico :
print(k,v)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Bonjour,
Merci pour ta réponse, c'est ce que j'ai essayé en premier, mais ça n'imprime rien non plus. La console reste vide, jusqu'à l'exécution de os.system("pause"). Les fichiers textes ne sont pas vide, j'ai vérifié. Une idée ?
Merci
C'est sans doute ta ligne 7 qui fou le bordel, tu sais au moins à quoi elle sert ?
- Edité par fred1599 6 avril 2020 à 13:12:09
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Bonjour, Merci pour ta réponse, c'est ce que j'ai essayé en premier, mais ça n'imprime rien non plus. La console reste vide, jusqu'à l'exécution de os.system("pause"). Les fichiers textes ne sont pas vide, j'ai vérifié. Une idée ? Merci
Fred, ta remarque m'a fait douter de ma ligne 5 en fait, et je pense que c'était bien le problème. J'ai donc refait mon code, et grâce à ton print(dico), j'obtiens le nom du premier fichier avec le contenu du troisième, et c'est tout. Étrange mais au moins, j'obtiens quelque chose ! Voici mon code complet (nouvelle version) :
import os
import math
import statistics
import glob
import random
filenames = glob.glob("*.txt")
for file in filenames :
with open(file, 'r') as f:
vliste = []
vliste.append(f.read())
dico = {k:v for k, v in zip(filenames, vliste)}
print(dico)
os.system("pause")
Ce code renvoie un dictionnaire avec le nom d'un fichier et le contenu d'un autre fichier (j'ai trois fichiers textes en tout).
Merci beaucoup. Cela donne exactement le résultat attendu ! Je crois que je comprends un peu mieux la mécanique maintenant. Avec vliste = [] dans la boucle for, elle était réinitialisée à chaque nouveau tour de boucle, c'est ça ?
La ligne 17 me permet de constater le résultat du programme avant que la console ne se ferme.
Ton programme doit s'exécuter dans le CMD Windows et non en double cliquant sur le fichier python. C'est pour cela qu'on t'indique l'inutilité de ta dernière ligne.
Dans le CMD tu fais un simple py chemin/de/ton/fichier.py et c'est tout.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Avec vliste = [] dans la boucle for, elle était réinitialisée à chaque nouveau tour de boucle, c'est ça ?
Oui, c'est bien ça.
MartinMartin23 a écrit:
La ligne 17 me permet de constater le résultat du programme avant que la console ne se ferme.
Tout éditeur Python (IDLE, PyCharm, Visual Studio, Jupyter Notebook, etc), même frustre, devrait te permettre de gérer l'exécution de ton code python sans avoir à écrire system("pause"). Et effetivment, c'est une mauvaise pratique que de cliquer sur des script Python pour l'apprentissage.
C'est un programme console, ça s'exécute donc dans une console.
Quand tu auras un programme graphique, tu l'exécutera en version graphique,
C'est juste de la logique, rien de plus...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Tout éditeur Python (IDLE, PyCharm, Visual Studio, Jupyter Notebook, etc), même frustre, devrait te permettre de gérer l'exécution de ton code python sans avoir à écrire system("pause"). Et effetivment, c'est une mauvaise pratique que de cliquer sur des script Python pour l'apprentissage.
Je codais avec Notepad++, qui ne me le permettait pas (je déconseille d'ailleurs). Je suis passé sur Visual Studio Code il y a seulement une semaine, et j'ai gardé les mauvaises habitudes...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Découverte Python Doc Tkinter Les chaînes de caractères
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Découverte Python Doc Tkinter Les chaînes de caractères
Pas d'aide concernant le code par MP, le forum est là pour ça :)