1. Mise en place
Créer un dossier TP_codage_Cesar et y placer le fichier ci-dessous :
Créer un fichier python nommé TP_codage_Cesar avec le code ci-dessous :
# ouvre un fichier situé dans le même répertoire en mode lecture : read
fichier = open("texte_a_coder.txt", 'r')
print(fichier)
fichier.close() # ne pas oublier de fermer le fichier
Enregistrer le programme dans votre dossier et tester le.
2. Accéder au contenu et problème de codage.
Modifier votre programme en :
fichier = open("texte_a_coder.txt", 'r')
print(fichier)
contenu=fichier.read() # on accède au contenu du fichier
print(contenu)
fichier.close()
On résout le problème d’encodage :
fichier = open("texte_a_coder.txt", 'r',encoding='UTF-8')
print(fichier)
contenu=fichier.read() # on accède au contenu du fichier
print(contenu)
fichier.close()
3. On préfère utiliser le with
with open('texte_a_coder.txt', 'r', encoding='UTF-8') as entree:
lignes=entree.readlines() # on lit toutes les lignes du fichier
print(lignes) # lignes est une liste un peu particulière
for ligne in lignes: # on parcourt les lignes du fichier
print(ligne)
4. On supprime les passages à la ligne inutiles
with open('texte_a_coder.txt', 'r', encoding='UTF-8') as entree:
lignes=entree.readlines()
print(lignes)
for ligne in lignes:
ligne_a_coder=ligne.strip('\n') # on supprime les renvois à la ligne
print(ligne_a_coder)
5. on ouvre un fichier en écriture pour y coder le texte
# avec les systèmes Windows : cp1252.
cle=2
def codage_cesar(txt,cle):
'''
txt : str
cle :int
return : txt codé selon un décalage déterminé par la clé
>>>codage_cesar("abAB",2)
"cdCD"
'''
retour=""
for caract in txt:
retour+=chr(ord(caract)+cle)
return retour
with open('texte_a_coder.txt', 'r', encoding='UTF-8') as entree:
with open('texte_code.txt', 'w', encoding='UTF-8') as sortie:
lignes=entree.readlines()
for ligne in lignes:
ligne_a_coder=ligne.strip('\n')
sortie.write(codage_cesar(ligne_a_coder,cle)+"\n")