Encodage [Résolu]

-
Bonjour, j'ai toujours un problème au niveau de def encodage_fichier():
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()
Afficher la suite 

3 réponses

Messages postés
59530
Date d'inscription
mardi 8 janvier 2008
Statut
Modérateur
Dernière intervention
13 novembre 2019
4962
0
Merci
Bonjour,

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

Les gens qui se battent peuvent perdre. Les gens qui ne se battent pas ont déjà perdu.
(Bertolt BRECHT)
Commenter la réponse de Chris 94
0
Merci
Bonsoir.

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()
Commenter la réponse de khrug
0
Merci
Merci pour ton explication. Je comprends mieux avec les commentaires que tu as mis.
Excellente journée à toi
Commenter la réponse de Chizqiyah