2010-05-20 27 views

Respuesta

8
'\n'.join(s[pos:pos+76] for pos in xrange(0, len(s), 76)) 
1

Desde Base64 exige una longitud de línea fija (64 o 76 caracteres, dependiendo de which version you look at), la biblioteca que produce la Base64 cadena ya debe hacer eso (o al menos tiene una opción para hacer que).

3

Si desea salto de línea, no utilizan el paquete base 64 recta, utilice el proporcionado en el correo electrónico:

import email 
print email.base64MIME.encode(your_string) 

es lo que hace dividir la cadena codificada cada 76 caracteres

9

Para la versión de Python 3:

import base64 
base64.encodebytes(s) 

https://docs.python.org/3/library/base64.html#base64.encodebytes

Codifique los objetos tipo byte s, que pueden contener datos binarios arbitrarios, y los bytes de retorno que contienen los datos codificados en base64, con nuevas líneas (b '\ n') insertadas después de cada 76 bytes de salida y asegurándose de que es una nueva línea final, según RFC 2045 (MIME).

Ejemplo:

>>> print(base64.encodebytes(b'a' * 100).decode()) 
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh 
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== 

>>> 

Para Python versión 2:

import base64 
base64.encodestring(s) 

http://docs.python.org/library/base64.html

codificar la cadena s, que puede contener datos binarios arbitrarios, y la de regreso una cadena que contiene uno o más líneas de datos codificados en base64. encodestring() devuelve una cadena que contiene una o más líneas de datos codificados en base64, incluyendo siempre una nueva línea adicional ('\ n').

Los documentos para la versión 2 se podrían escribir con mayor claridad, pero hacen lo que usted desea.

Ejemplo:

>>> print base64.encodestring('a'*100) 
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh 
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYQ== 

>>> 
0

Debe utilizar estricta codificación. Que añadirá una nueva línea

'your_string_goes_here'.encode('base64', 'strict') 
+1

Esto añade una nueva línea. Pruebe con una cadena más larga y verá. Además, "... 'strict', lo que significa que los errores de codificación provocan un error UnicodeError)" https://docs.python.org/2/library/stdtypes.html?highlight=encode#str.encode –

Cuestiones relacionadas