Encodeur et décodeur de fichiers en base64

Résolu
UltraBot Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   -  
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai créé deux programmes.
Le premier sert à convertir un fichier quelconque en un fichier texte base64, et l'autre sert à faire l'inverse

Le problème, c'est que quand je convertis un GROS fichier vidéo en base64, puis le reconvertis en vidéo, le fichier obtenu au final est corrompu.

Voici le premier programme :
import base64

file_path = input()

file = open(file_path, 'rb')
file_2 = open(file_path+'.txt', 'wb')

while True:
    data = file.read(10000000)
    data_encoded = base64.b64encode(data)
    file_2.write(data_encoded)
    if not data:
        break


file.close()
file_2.close()


Voici le deuxième programme :
import base64

file_path = input()

file = open(file_path+'.txt', 'rb')
file_2 = open(file_path, 'wb')

while True:
    data = file.read(10000000)
    data_decoded = base64.b64decode(data)
    file_2.write(data_decoded)
    if not data:
        break


file.close()
file_2.close()



Quelqu'un pourrait-il m'expliquer pourquoi le fichier que j'obtiens finalement est corrompu ?

Merci d'avance pour votre réponse
A voir également:

1 réponse

NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Réfléchis un peu à ton code, tu lis une partie du fichier, 10 000 000 octets 10 Mo, puis tu convertit cette partie en base 64 (soit 13333333,3333 octets à l'arrivée (donc 2= à la fin), cela représente 13 333 335 octets).
Pour l'inverse tu lis 10 000 000 octets 10 Mo de base 64 que tu reconvertis en binaire, il y a une dissymétrie ...

Tu ne semble pas avoir compris comment fonctionne la base 64, renseignes-toi plus.
0
UltraBot Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
Que faut-il faire ?
0
UltraBot Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
Aussi, je peux convertir un PETIT fichier en base64 puis faire l'inverse sans problème. Pourquoi ?
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Car tu coupes ton fichier dans les 2 sens et comme les coupures ne sont pas au même endroit, cela "casse" le fichier.
0
UltraBot Messages postés 67 Date d'inscription   Statut Membre Dernière intervention  
 
Comment résoudre ce problème ?
0
NHenry Messages postés 15219 Date d'inscription   Statut Modérateur Dernière intervention   365
 
Soit convertir tout le fichier d'un coup ou faire un découpage plus cohérent du fichier.
0