2016-09-15 2 views
-1

J'essaye de prendre un fichier avec le suffixe .bin, l'encoder et ensuite de l'envoyer à quelqu'un (l'envoyer comme .bin n'est pas supporté). .le problème est que quand j'utilise la commande:Comment copier un fichier .bin dans un fichier texte en Python

with open('myfile.bin','r') as fileToCopy: 

Je suis un message d'erreur

'charmap' codec can't decode byte 0x90 in position 192:chatacter maps to <undefined> 

alors je pensais à une solution de contournement qui convertit le fichier txt, puis de l'envoyer. J'ai essayé de copier un fichier binaire dans un fichier texte, le code que j'ai utilisé est

with open('myfile.bin','rb') as fileToCopy: 
    with open('newfile.txt,'w') as myNewFile: 
     for line in fileToCopty: 
      myNewFile.write(line) 

et le fichier .bin contient des lignes comme celle-ci:

244e 504b 0100 3900 9000 0003 0100 0000 
8000 0003 0200 0000 a432 0002 0000 0000 
0002 0a02 0103 0000 0001 0a02 0003 0000 
0001 0a02 0103 0000 0002 0a02 0003 0000 

Mais les résultats sont un fichier contenant ordures. J'ai essayé aussi de décoder les octets que le format utf-8, mais je reçu ce message d'erreur:

'utf-8' codec can't decode byte 0xfa in position 1:invalid start bye 

Le code que j'utilisé pour décoder « format utf-8 est:

with open('myfile.bin','rb') as fileToCopy: 
    with open('newfile.txt,'w') as myNewFile: 
     for line in fileToCopty: 
      myNewFile.write(line.decode('utf-8')) 

Am Je fais quelque chose de mal? Y a-t-il une autre façon de faire cela?

+2

".. les résultats sont un fichier contenant des ordures .." - qu'espériez-vous voir dans votre fichier texte? ".. J'ai aussi essayé de décoder les octets en format utf-8 .." - c'était une idée terriblement mauvaise. Vous pouvez uniquement décoder le texte au format UTF8 à l'aide de la méthode 'decode' UTF8. – usr2564301

+0

Comme le suggère Rad, ce que vous essayez de faire n'a aucun sens. Essayez d'expliquer pourquoi voudriez-vous convertir le fichier binaire en un texte plutôt que de demander comment le faire. –

Répondre

2

Ce que vous essayez de faire n'est pas clair. Soit vous essayez de copier un fichier existant myfile.bin dans un nouveau fichier newfile.txt ou vous essayez de convertir le fichier binaire dans un format lisible par l'homme.

En supposant qu'il est votre objectif de copier le fichier myfile.bin à newfile.txt vous pouvez jeter un oeil sur le module shutil de la bibliothèque standard Python. Cela contient des opérations de fichiers de haut niveau telles que copy, move, delete et plus.

Si votre objectif est de décoder le contenu du fichier dans un format lisible par l'utilisateur et que votre seule information sur le fichier est .bin, vous risquez de rencontrer un problème. Le fichier binaire pourrait encoder toute information telle que des images, des textes ou des vidéos. Sans connaître le type d'encodage le contenu est plus ou moins inutile pour vous.