Python3でHTTPS接続を確立しようとしています。ユーザー名とパスワードをエンコードしようとすると、base64
encodebytes
メソッドは、エンコードされた値に改行文字「\ n」を返しますこのため、接続しようとするとエラーが発生します。
エンコード時に改行文字を追加しないようにbase64
ライブラリに指示する方法、またはこの改行文字を削除する最良の方法は何ですか? replace
メソッドを使用しようとしましたが、次のエラーが表示されます。
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
私のコード:
auth = b'[email protected]:passWORD'
auth_base64 = base64.encodebytes(auth)
auth_base64 = auth_base64.replace('\n', '')
何か案は?ありがとう
次のコードが機能します
auth_base64 = auth_base64.decode('utf-8').replace('\n', '')
Mandarの観測 に同意すると、base64.xxxx_encode()
は行の折り返しなし_\n
_を出力します。
単なる観察よりも自信を持って理解したい人のために、これらはこのトピックで見つけることができる公式の約束(一種)です。 Python 3のドキュメント は、base64.encode(...)
が76バイトの出力ごとに改行を追加することを言及しています。それと比較して、他のすべての*_encode(...)
関数は、ラインラップ動作についてまったく言及していません。これは、おそらく「ラインラップ動作なし」と見なすことができます。価値があるのは、 Python 2のドキュメント では行の折り返しについて何も言及されていません。
python3を使用する場合:-
binascii.b2a_base64(cipher_text、newline = False)
python2を使用する場合:
binascii.b2a_base64(cipher_text)[:-1]