2014-07-23 2 views
0

Donc, j'ai écrit des données cryptées dans un fichier txt. J'ai lu la ligne en utilisant readline().
Mais ce que je reçois est la valeur du type de chaîne.
Simplecrypt: Les données à déchiffrer doivent être des octets

Dans le fichier texte, il ressemble à ceci:

`b'sc\x00\x01\x9eU\x86\x8aV\x8f\xa3\x9f\xf4iD\x9bv\xea\x05\x11\xdeo\xd7 \xef\xb1iK\xc1;\xa5\x02\[email protected]\xe4|\x9b^\xe5\xf9e\xc4\xf30\xaa\xe8\xcc>\xf8a\xfa;"\xfb)\xc7z|\xc9\x9c\x1c\x19\xc1}\x15\xdd_\xfd\x90z\x865\xe9O\xef\xd9\t\x06\x9c'` 

(b'~~~~~~') 

Mais, quand je lis le fichier texte en python et le mettre dans la variable, il ressemble à ceci:

'b\'sc\\x00\\x01\\x9eU\\x86\\x8aV\\x8f\\xa3\\x9f\\xf4iD\\x9bv\\xea\\x05\\x11\\xdeo\\xd7 \\xef\\xb1iK\\xc1;\\xa5\\x02\\[email protected]\\xe4|\\x9b^\\xe5\\xf9e\\xc4\\xf30\\xaa\\xe8\\xcc>\\xf8a\\xfa;"\\xfb)\\xc7z|\\xc9\\x9c\\x1c\\x19\\xc1}\\x15\\xdd_\\xfd\\x90z\\x865\\xe9O\\xef\\xd9\\t\\x06\\x9c\'\n' 
('b\'~~~~~~\'\n') 



en raison de cette différence, je reçois un message d'erreur:

you cannot use a string because no string encoding will accept all possible characters. 


Il reconnaît cela sous la forme d'une chaîne.
Comment lire le fichier et le mettre dans le type de variable en octets?

+0

Le fichier texte est à mon humble avis « mauvais ». Il semble que vous ayez sauvegardé la forme 'repr()' d'un objet 'bytes' dans un fichier texte et que vous essayez maintenant d'analyser cette représentation dans un objet' bytes'. Je voudrais enregistrer une représentation plus commune des données binaires dans le fichier texte, par exemple Base64. Jetez un oeil au module 'binascii' dans la bibliothèque standard Python. – BlackJack

Répondre

0

Le problème peut ne pas être dans le type de données. Vos données sont des données binaires et peuvent contenir une nouvelle ligne (\n). Dans ce cas, readline lit uniquement le retour à la ligne, c'est-à-dire seulement une partie de la chaîne.

Le message d'erreur fait référence à ce problème. Malheureusement, readline n'est pas fiable avec des données binaires. Vous devrez encoder les données binaires dans une chaîne (en utilisant, par exemple, base64) afin de pouvoir les enregistrer dans un fichier texte.

Pour un exemple de travail, voir: SimpleCrypt Python Error

Pour un eaxmple de codage de données binaires dans une chaîne, voir: How does one encode and decode a string with Python for use in a URL?

Questions connexes