Encodage

Résolu
Chizqiyah -  
 Chizqiyah -
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()

3 réponses

  1. Chris 94 Messages postés 1937 Date d'inscription   Statut Modérateur Dernière intervention   7 536
     
    0
  2. khrug
     
    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()
    0
  3. Chizqiyah
     
    Merci pour ton explication. Je comprends mieux avec les commentaires que tu as mis.
    Excellente journée à toi
    0