2015-06-04 7 views
12

Sto provando a fare una connessione HTTPS in Python3 e quando provo a codificare il mio nome utente e password il metodo base64encodebytes restituisce il valore codificato con un nuovo carattere di linea alla fine "\ n" e per questo motivo sono ottenere un errore quando provo a connettermi.Rimuovere la nuova riga " n" dalle stringhe codificate base64 in Python3?

C'è un modo per dire alla libreria base64 di non aggiungere un nuovo carattere di linea durante la codifica o qual è il modo migliore per rimuovere questo nuovo carattere di linea? Ho provato ad utilizzare il metodo replace ma ottengo il seguente errore:

Traceback (most recent call last): 
    File "data_consumer.py", line 33, in <module> 
    auth_base64 = auth_base64.replace('\n', '') 
TypeError: expected bytes, bytearray or buffer compatible object 

Il mio codice:

auth = b'[email protected]:passWORD' 
auth_base64 = base64.encodebytes(auth) 
auth_base64 = auth_base64.replace('\n', '') 

Tutte le idee? Grazie

risposta

34

Invece di considerare l'utilizzo di encodestringb64encode. Più tardi non aggiunge \n caratteri. per esempio.

In [11]: auth = b'[email protected]:passWORD' 

In [12]: base64.encodestring(auth) 
Out[12]: b'dXNlcm5hbWVAZG9tYWluLmNvbTpwYXNzV09SRA==\n' 

In [13]: base64.b64encode(auth) 
Out[13]: b'dXNlcm5hbWVAZG9tYWluLmNvbTpwYXNzV09SRA==' 

Produce identica stringa codificata tranne il \n

+0

Per Python 3 uso 'base64.standard_b64encode (auth)' – SevenDays

+0

@SevenDays '' base64.b64encode (autenticazione) '' lavora con python3 e '' base64 .standard_b64encode (auth) '' sembra restituire lo stesso risultato. –

5

seguente codice dovrebbe funzionare

auth_base64 = auth_base64.decode('utf-8').replace('\n', '')