Encodage
Résolu
Chizqiyah
-
Chizqiyah -
Chizqiyah -
Bonjour, j'ai toujours un problème au niveau de def encodage_fichier():
Voici tout le code que j'ai fais
"""
Procède à l'encodage des paires phrase,cle contenues dans le fichier
encodage_a_faire.txt. Une fois l'encodage fini, tous les messages
encodés sont écrits sur des lignes séparées dans un fichier nommé
encodage_fini.txt.
Dans le fichier encodage_a_faire.txt, chaque ligne représente une paire
phrase,clé, où les deux chaînes de caractères sont séparées par un ','.
J'utilise la fonction split() pour séparer chacune de ces deux
valeurs en lisant une ligne.
Appel à la fonction encodage() pour faire l'encodage d'une phrase
donnée avec sa clé.
Pour gérer l'écriture de toutes les lignes encodées dans le fichier voici ma procédure :
Écrire dans le fichier de sortie au fur et à mesure qu'une phrase est encodée.
Cette approche requiert alors d'ouvrir les deux fichiers (encodage_a_faire.txt et
encodage_fini.txt) en même temps et d'écrire dans ce dernier à chaque fois qu'une
ligne du premier est encodée.
Après l'exécution de cette fonction, le contenu du fichier encodage_fini.txt devrait
être toutes les phrases à encoder du fichier decodage_a_faire.txt, sans leur clé.
"""
Voici tout le code que j'ai fais
ALPHABET = { "a": 0, "b": 1, "c": 2, "d": 3, "e": 4, "f": 5, "g": 6, "h": 7, "i": 8, "j": 9, "k": 10, "l": 11, "m": 12, "n": 13, "o": 14, "p": 15, "q": 16, "r": 17, "s": 18, "t": 19, "u": 20, "v": 21, "w": 22, "x": 23, "y": 24, "z": 25, " ": 26, "'": 27 } ALPHABET_INVERSE = {v: k for k, v in ALPHABET.items()} LONGUEUR_ALPHABET = len(ALPHABET) def encodage(phrase, cle): encodage = [] # Initialisation for i in range(len(phrase)): x = (ALPHABET[phrase[i]] + ALPHABET[cle[i % len(cle)]]) % LONGUEUR_ALPHABET encodage.append(ALPHABET_INVERSE[x]) return ("" . join(encodage)) def encodage_fichier():
"""
Procède à l'encodage des paires phrase,cle contenues dans le fichier
encodage_a_faire.txt. Une fois l'encodage fini, tous les messages
encodés sont écrits sur des lignes séparées dans un fichier nommé
encodage_fini.txt.
Dans le fichier encodage_a_faire.txt, chaque ligne représente une paire
phrase,clé, où les deux chaînes de caractères sont séparées par un ','.
J'utilise la fonction split() pour séparer chacune de ces deux
valeurs en lisant une ligne.
Appel à la fonction encodage() pour faire l'encodage d'une phrase
donnée avec sa clé.
Pour gérer l'écriture de toutes les lignes encodées dans le fichier voici ma procédure :
Écrire dans le fichier de sortie au fur et à mesure qu'une phrase est encodée.
Cette approche requiert alors d'ouvrir les deux fichiers (encodage_a_faire.txt et
encodage_fini.txt) en même temps et d'écrire dans ce dernier à chaque fois qu'une
ligne du premier est encodée.
Après l'exécution de cette fonction, le contenu du fichier encodage_fini.txt devrait
être toutes les phrases à encoder du fichier decodage_a_faire.txt, sans leur clé.
"""
#Ouverture des fichiers à lire et à écrire # Ouverture du fichier1 et sa lecture fichier1 = open("encodage_a_faire.txt", "r") fichier2 = open("encodage_fini.txt", "w") fichier1.read() for l in fichier1: fichier1.split(",") fichier2.write(encodage(fichier1[0], fichier1[1])) # Fermeture des fichiers fichier1.close() fichier2.close()
A voir également:
- Encodage
- Encodage ascii - Guide
- Encodage binaire - Guide
- Parametre d'encodage non pris en charge - Guide
- Le flux d’octets était en erreur par rapport à l’encodage de caractères déclaré. la déclaration d’encodage des caractères était peut être incorrecte. ✓ - Forum Programmation
- Soucis d'encodage ✓ - Forum PHP
3 réponses
Bonjour,
Pour rappel :
Pour rappel :
Les réponses sont données par des bénévoles, pas par des machines. Il est vivement recommandé d'user des formes minimales de la politesse ("bonjour', "s'il vous plait", "merci d'avance") pour rester dans le cadre de notre charte d'utilisation.Merci aussi d'attribuer à ton code la couleur syntaxique et la forme correcte avec le bouton
<>
▼.
Bonsoir.
Les commentaires du code sont à lire.
Les commentaires du code sont à lire.
#Ouverture des fichiers à lire et à écrire fread = open("encodage_a_faire.txt", "r") fwrite = open("encodage_fini.txt", "w") # fichier1.read() => inutile # Pour chaque ligne du fichier à lire for line in fread: # La ligne à lire c'est l pas fichier1 ! # str.split retourne plusieurs valeurs qu'on doit récupérer ! # fichier1.split(",") # On supprime les caractères blancs de fin de ligne le "\n" line = line.rstrip() # On "éclate" la ligne en 2 parties string, key = line.split(',') # Les arguments à fournir à ta fonction encodage est le résultat du split # fichier1[0], fichiers[1] n'a aucun sens ! # fichier2.write(encodage(fichier1[0], fichier1[1])) # On adjoint à la ligne un saut de ligne linew = encodage(string, key) + "\n" # On écrit la ligne fwrite.write(linew) fread.close() fwrite.close()