Fichiers

Ecriture du calendrier d'une année dans un fichier texte

nous avons déjà écrit un programme Cliquer ici pour y accéder qui affiche un calendrier d'une année à saisir, pour obtenir l'affichage suivante :

Entrez une année : 2016
  vendredi     1    Janvier      2016
  samedi       2    Janvier      2016
  dimanche     3    Janvier      2016
  lundi        4    Janvier      2016
  mardi        5    Janvier      2016
  mercredi     6    Janvier      2016
  jeudi        7    Janvier      2016
  ...
  ...
  ...

Modifier le programme de l’exercice pour écrire ses résultats d’affichage dans un fichier qu’on nomme « calendrier.txt ».

Une résolution de l'exercice "Ecriture du calendrier d'une année dans un fichier texte".


import calendar
""" Ce programme permet d'enregistrer le calendrier d'une année à saisir dans un fichier texte
"""
f = open("CalendrierEx6.txt", "w")
lemois = {0:"Janvier  ", 1:"Février  ", 2:"Mars     ",3: "Avril    ", 4:"Mai      ",
        5:"Juin     ", 6:"Juillet  ", 7:"Août     ", 8:"Septembre", 9:"Octobre  ",
        10:"Novembre ", 11:"Décembre "}
joursMois = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
jourSemaine = ["lundi   ", "mardi   ", "mercredi", "jeudi   ","vendredi",
           "samedi  ", "dimanche"]
annee= int(input("Entrez une année : "))

if(annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0): # pour vérifier si l'année est bissextile ou pas
    joursMois[1]=29
for j in range(0,12):
    if j == 0 :
        t = calendar.weekday(annee,1,1) # pour obtenir le jour de la semaine du premier janvier de l'année
    
    jour = 0   
    while jour < joursMois[j] :
        if jour <= 8 :
            if joursMois[j] <=8 :
                f.write("  "+str(jourSemaine[(jour+t)%7])+"   "+ str(jour+1)+ "  "+str(lemois[j])+"  "+str(annee)+"\n")
            else :
                f.write(" "+str(jourSemaine[(jour+t)%7])+"   "+ str(jour+1)+ "  "+str(lemois[j])+"  "+str(annee)+"\n")
        else :
             f.write(" "+str(jourSemaine[(jour+t)%7])+"  "+ str(jour+1)+"  "+str(lemois[j])+"  "+str(annee)+"\n")
        jour = jour + 1
    t = (jour+t)%7 # pour tenir compte du décalage des jours de la semaine d'un mois à l'autre
	

Lecture d'un fichier texte

Ecrire un programme qui permet de lire le fichier "calendrier.txt" créé par le programme de l'exercice ci-dessus et d'afficher le texte.

Une résolution de l'exercice "Lecture d'un fichier texte".


"""
Ce programme permet de récupérer les données dans un fichier texte et de les affichier
"""
# ouverture du fichier en lecture :
f=open('CalendrierEx6.txt','r')


# récupération du contenu du fichier dans une chaîne (string) :
chaine=f.read()
 
# fermeture du fichier
f.close()


# impression de la chaine pour vérification :
print(chaine)

Ecriture d'un fichier texte donné.

Ecrire un programme permettant de créer un fichier texte et d'y écrire le texte suivant :

P1
10 20
0000000000
0000000000
0000000000
1111111111
1111111111
1111111111
0000000000
0000000000
0000000000
1111111111
1111111111
1111111111
0000000000
0000000000
0000000000
1111111111
1111111111
1111111111
0000000000
0000000000
0000000000
1111111111
1111111111
1111111111
  

Résolution de l'exercice "Ecriture d'un fichier texte donné".


#ouverture du fichier en écriture :
f=open('exemple','w')  # ou f=open(nom+'.pbm','w') 
f.write('P1\n')
f.write(str(100)+' '+str(100)+'\n')

nbLignes = 0
while nbLignes<=100 :
    for j in range(3):
        for j in range(100):
            f.write('0')
        f.write('\n')
    for j in range(3):
        for j in range(100):
            f.write('1')
        f.write('\n')
    nbLignes = nbLignes + 2*3
	
f.close()

Ou bien en utilisant les fonctions :


#ouverture du fichier en écriture :
f=open('Exemple1','w')  # ou f=open(nom+'.pbm','w') 
# déclaration de l'entête pour fichier pbm texte :
f.write('P1\n')
f.write(str(10)+' '+str(20)+'\n')
	
def ligneEpaisseurUn(couleur) :
	for j in range(10) :
		f.write(couleur)
	f.write('\n')
	
def ligne(couleur) :
	for j in range(3) :
		 ligneEpaisseurUn(couleur)
	
nbLignes=0
while nbLignes<=20 :
	ligne('0')
	ligne('1')
	nbLignes+=(2*3)
	
f.close()

Pour approfondir le format du fichier texte ci-dessus, cliquer ici