Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impression de dictionnaire

Sujet résolu
5 avril 2020 à 13:21:20

Bonjour,

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)



  • Partager sur Facebook
  • Partager sur Twitter
5 avril 2020 à 13:27:07

for k, v in dico.items()
  • Partager sur Facebook
  • Partager sur Twitter

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)

6 avril 2020 à 13:07:50

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
  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 13:10:33

Fait un print(dico)

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

  • Partager sur Facebook
  • Partager sur Twitter

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)

6 avril 2020 à 13:12:54

MartinMartin23 a écrit:

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


Donne le code complet.
  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 15:55:40

Salut,

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).

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 16:28:50

ligne 11 devrait être placée ligne 8.

La ligne 17 ne devrait pas être utilisée.

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 17:10:43

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.

Merci à vous deux !

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 17:16:53

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.

  • Partager sur Facebook
  • Partager sur Twitter

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)

6 avril 2020 à 17:20:08

Quelle différence ? (pour apprendre)
  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 17:23:22

MartinMartin23 a écrit:

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.

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 17:25:43

MartinMartin23 a écrit:

Quelle différence ? (pour apprendre)


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...

  • Partager sur Facebook
  • Partager sur Twitter

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)

6 avril 2020 à 17:32:48

Bonjour,

D'accord, je prends note.

PascalOrtiz a écrit:

 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...
  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 18:11:48

MartinMartin23 a écrit:

Je codais avec Notepad++

Je m'en doutais un peu :)

  • Partager sur Facebook
  • Partager sur Twitter
6 avril 2020 à 19:29:19

Bonjour,

Sujet résolu ?

Tu peux passer le sujet à "résolu" (bouton en haut à droite du sujet) et cliquer sur les pouces levés des messages qui t'ont aidé⋅e ;)

-
Edité par Lamecarlate 6 avril 2020 à 19:30:57

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)