Fichiers-txt-csv-dictionnaire

      OUVERTURE :

      Note

      Sous Python, l’accès aux fichiers est assuré par l’intermédiaire d’un \(objet-fichier\) que l’on crée à l’aide de la fonction interne \(open()\). Après avoir appelé cette fonction, vous pouvez lire et écrire dans le fichier en utilisant les méthodes spécifiques de cet objet-fichier. L’ouverture se fait de la manière suivante : \(fichier = open("nom","mode")\) nom représente le nom du fichier sur lequel on veut travailler. Si on ne met que le nom du fichier sans le chemin contenant les répertoires, le fichier doit se trouver dans le dossier de travail, c’est-à-dire par défaut, celui où se trouve votre programme (on l’appelle aussi le répertoire courant). Si ce n’est pas le cas, il est préférable d’utiliser le chemin relatif dans l’arborescence.

      Note

      Exemple pour ouvrir le fichier tortue.py dans le répertoire C:travailon saisira : \(fichier = open("travail/tortue.py","r")\) mode est un caractère indiquant dans quel but le fichier est ouvert :

      Mode

      Effet

      "r"
      

      Ouvre le fichier en mode lecture (r = read ).

      "w"
      

      Ouvre le fichier en mode écriture ( w = write ). Si le fichier n’existe pas il est créé, si le fichier existe déjà, il est écrasé.

      "a"
      

      Ouvre le fichier en mode ajout ( a = append ). Si le fichier n’existe pas, il est créé, sinon, les ajouts se feront à la fin du fichier existant.

FERMETURE :

Fermeture :

A la fin de l’utilisation de ce fichier, il faut le fermer avec l’instruction : \(fichier.close()\)

Cela permet :

De finaliser l’écriture dans le fichier (parfois Python attend la fermeture pour y écrire)

De libérer le fichier pour d’autres utilisateurs.

Exemple 0801 :

      _images/image175.png
      _images/image181.png

LECTURE :

La lecture dans un fichier peut se faire de plusieurs façons, si on veut lire les lignes une à une, on utilisera plutôt la méthode :

\(chaine = fichier.readline()\) pour lire une ligne et la stocker dans la variable chaine. Si on tente de lire plus de lignes qu’il y en a dans le fichier, aucune erreur ne se produit, mais la variable chaine est vide.

Remarque :

La méthode \(readline()\) renvoie une chaîne de caractères.

Exemple 0802 :

_images/image176.png

Si l’on veut lire tout le fichier, le plus simple est d’utiliser l’instruction :

\(for\) \(ligne\) \(in\) \(fichier\) : suivi de vos lignes de code. Dans ce cas la variable ligne prendra successivement pour valeur chaque ligne de votre fichier identifié par la variable fichier.

Exemple 0803 :

_images/image177.png

Une autre méthode pour lire l’intégralité d’un fichier en une instruction seulement est d’utiliser \(readlines()\). Ce n’est possible que si le fichier n’est pas trop volumineux : puisqu’il est copié intégralement dans une variable, c’est-à-dire dans la mémoire vive de l’ordinateur.

Remarque :

La méthode readlines() renvoie une liste.

Exemple 0804 :

_images/image178.png

ECRITURE :

Ecriture :

On peut écrire une ligne de texte dans un fichier avec la méthode \(write()\) .

L’argument de la méthode \(write()\) utilisée avec un fichier texte doit être une chaîne de caractères (string). On enregistre d’autre types de valeurs ( entiers…) en les transformant d’abord en chaîne de caractères, on le réalise en utilisant la fonction intégrée str() :

Exemple 0805 :

_images/image179.png
_images/image180.png _images/image181.png

fichier csv

Ouverture d’un fichier :

\(fichier=open(f.csv,"r")\)

Fermeture d’un fichier:

\(fichier.close()\)

Lecture d’un fichier et données extraites en format liste :

liste_csv=csv.reader(fichier,delimiter= »; ») liste_csv=csv.reader(fichier,delimiter= », »)

for ligne in liste_csv : #ligne est une liste.

print(ligne) delimiter

delimiter indique le symbole de séparation des données, si l’on doit utiliser des nombres décimaux(float) il faut utiliser la commande

delimiter= »; »

pour éviter tout mélange dans les données. OUVERTURE CSV : Lecture d’un fichier et données extraites en format dictionnaire :

dict_csv = csv.DictReader(fichier,delimiter= »; ») dict_csv = csv.DictReader(fichier,delimiter= », ») for ligne in dict_cvs:

print(ligne)

#ligne est un {« clé » : »valeur »} du dictionnaire. Si c’est un tuple :

{« clé1 » : »valeur1 », »clé2 » : »valeur2 », « … » : »… » }

LISTE :

Chaque ligne est une liste, et toutes les valeurs sont des chaînes de caractères.

_images/image184.png

DICTIONNAIRE :

Structure de dictionnaire:

Différence entre liste et dictionnaire :

Avec le même fichier CVS, on obtient deux types de données : les listes ou un dictionnaire.

Le choix de du type de données dépend de l’utilisation que l’on veut faire de ces données.

Cet exemple est un fichier qui ne contient que des données simples, c’est à dire chaque colonne ne contient qu’une donnée. On peut utiliser les deux types : liste ou dictionnaire.

Fichier de données :

Le résultat donne l’illustration des types de données :

Utilisation des données du fichier CSV pour construire des figures :

Les fichiers CSV permettent la visualisation et la représentation graphiques de données, il s’agit de représenter graphiquement des données chiffrées. L’exemple suivant utilise le module tkinter, mais la plupart du temps on utilise le module bokeh.

Dessins CSV

Code

Fichier CSV

#0804 dessins csv.py
import csv
from tkinter import*
def creerfenetre(fenetre,titre,taille):
  "modifie une fenêtre"
  fenetre.title(titre)
  fenetre.geometry(taille)
  return fenetre
def dessine_csv(can):
  """Ouvre le fichier csv et dessine dans le canevas les figures"""
  ft='verdana 12 bold'
  with open("figure.csv") as fichier_cvs:
    lecture=csv.DictReader(fichier_cvs,delimiter=";")
    for ligne in lecture:
      donnees=ligne["polygone"]
      #split transforme une chaîne de caractères en une liste
      d=donnees.split(',')#  voir chapitre types de données
      figure=ligne['figure']
      coord=ligne['polygone']
      couleur=ligne['couleur']
      x1,y1,x2,y2=int(d[0]),int(d[1]),int(d[2]),int(d[3])
      xi,yi=int((x1+x2)/2),int((y1+y2)/2)
      if figure=='polygone' :
         can.create_polygon(d,fill=couleur)
         can.create_text(xi+20,yi+100,text=pays,font=ft)
      if figure=='triangle' :
         can.create_polygon(d,fill=couleur)
         can.create_text(xi+20,yi+100,text=figure,font=ft)
      if figure=='rectangle':
         can.create_rectangle(d,fill=couleur)
         can.create_text(xi,yi,text=figure,font=ft)
      if figure=='cercle' or figure=='ellipse':
         can.create_oval(d,fill=couleur)
         can.create_text(xi,yi,text=figure,font=ft)
       fichier_cvs.close()
#---------------------------------------#
largeur,hauteur=1000,640
fenetre=Tk()
taille=str(largeur)+"x"+str(hauteur)
titre="Dessins CSV"
creerfenetre(fenetre,titre,taille)
can=Canvas(fenetre,width=largeur,height=hauteur,bg="white")
can.grid(row=0,column=0)
dessine_csv(can)
fenetre.mainloop()
_images/image189.png

résultat NSI Compter les lettres

Code

Fichier CSV

majuscules=[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]
minuscules=[97, 98, 99, 100, 101, 102, 103, 104, 105,
                106, 107, 108, 109, 110, 111, 112, 113,
                114, 115, 116, 117, 118, 119, 120, 121, 122]
for i in range(len(majuscules)):
      print('"'+chr(majuscules[i])+'"',end=',')
for i in range(len(minuscules)):
      print('"'+chr(minuscules[i])+'"',end=',')
Fabriquer les fichiers
# file-append.py
f = open('fichier1.txt','a')
f.write("Lecture dans un fichier\n")
f.write("Une grande partie de l'information \n")
f.write("en biologie est stockée sous forme\n")
f.write("de texte dans des fichiers.\n")
f.write("Pour traiter cette information,\n")
f.write("vous devez le plus souvent lire\n")
f.write("ou écrire dans un ou plusieurs fichiers.\n")
f.write("Python possède pour cela de nombreux \n")
f.write("outils qui vous simplifient la vie.\n")
f.close()

f = open('fichier2.txt','a')
f.write("Chaque élément de la liste lignes est\n")
f.write("une chaîne de caractères.\n")
f.write("C'est en effet sous forme de chaînes \n")
f.write("de caractères que\n")
f.write("Python lit le contenu d'un fichier.\n")
f.close()
f = open('fichier3.txt','a')
f.write("Chaque élément de la liste lignes se termine par le caractère \n.\n")
f.write("Ce caractère un peu particulier correspond au « saut de ligne »\n")
f.write("qui permet de passer d'une ligne à la suivante. \n")
f.write("Ceci est codé par un caractère spécial que l'on représente par \n.\n")
f.write("Vous pourrez parfois rencontrer également la notation octale \012.\n")
f.close()
        f = open('fichier-donnees.txt','a')
f.write("code ASCII :\n")
f.write("  33 =  !\n")
f.write('  34  = " ;  35  = # ;  36  = $ ;  37  = % ;  38 =  &\n')
f.write("  39  = ' ;  40  = ( ;  41  = ) ;  42  = * ;  43 =  +\n")
f.write("  44  = , ;  45  = - ;  46  = . ;  47  = / ;  48 =  0\n")
f.write("  49  = 1 ;  50  = 2 ;  51  = 3 ;  52  = 4 ;  53 =  5\n")
f.write("  54  = 6 ;  55  = 7 ;  56  = 8 ;  57  = 9 ;  58 =  :\n")
f.write("  59  = ; ;  60  = < ;  61  = = ;  62  = > ;  63 =  ?\n")
f.write("  64  = @ ;  65  = A ;  66  = B ;  67  = C ;  68 =  D\n")
f.write("  69  = E ;  70  = F ;  71  = G ;  72  = H ;  73 =  I\n")
f.write("  74  = J ;  75  = K ;  76  = L ;  77  = M ;  78 =  N\n")
f.write("  79  = O ;  80  = P ;  81  = Q ;  82  = R ;  83 =  S\n")
f.write("  84  = T ;  85  = U ;  86  = V ;  87  = W ;  88 =  X\n")
f.write("  89  = Y ;  90  = Z ;  91  = [ ;  92  = \ ;  93 =  ]\n")
f.write("  94  = ^ ;  95  = _ ;  96  = ` ;  97  = a ;  98 =  b\n")
f.write("  99  = c ;  100  = d ;  101  = e ;  102  = f ;  103 =  g\n")
f.write("  104  = h ;  105  = i ;  106  = j ;  107  = k ;  108 =  l\n")
f.write("  109  = m ;  110  = n ;  111  = o ;  112  = p ;  113 =  q\n")
f.write("  114  = r ;  115  = s ;  116  = t ;  117  = u ;  118 =  v\n")
f.write("  119  = w ;  120  = x ;  121  = y ;  122  = z ;  123 =  {\n")
f.write("  124  = | ;  125  = } ;  126  = ~ ;\n")
f.close()
f = open('output1.txt','a')
f.write("1\n")
f.write("4\n")
f.write("9\n")
f.write("16\n")
f.write("25\n")
f.write("36\n")
f.write("49\n")
f.write("64\n")
f.write("81\n")
f.write("100\n")
f.close()

ECRIRE LES NOMBRES

         
#aaacompter-les-lettres.py
#liste des caractères
lettres=["A","B","C","D","E","F","G","H","I","J",
		"K","L","M","N","O","P","Q","R","S","T",
		"U","V","W","X","Y","Z","a","b","c","d",
		"e","f","g","h","i","j","k","l","m","n",
		"o","p","q","r","s","t","u","v","w","x","y","z"]
liste_fichiers2 =["fichier-donnees.txt","fichier1.txt",
        "fichier2.txt","fichier3.txt","output1.txt"]
for i in range(1,len(liste_fichiers2)):
             f=open(liste_fichiers2[i])
             k=0
             m=f.read()
             for ligne in m:
				message = ligne
				for j in range(len(message)):
					if message[j] in lettres:k=k+1
print(message,end='')
f.close()
print('----------------------------------------------------------------')
print('k =',k)
print('----------------------------------------------------------------')
print('Dans le fichier ',liste_fichiers2[i],' il y a ',k, '  lettres')
print('----------------------------------------------------------------')
educationdunumerique.fr. Tous  droits réservés. D Pérarnaud Limoges.