概要
最近、Python2から3に乗り換えた。多少の違いがあるとのことだったが、多少ではなく結構違いがあってハマったのでメモしておく。必要があれば今後も追記。
詳細
base64.b64encode
bytes, str, unicodeの扱いが変わったことによる差だろうからじっくり考えればわかるのだけど、変わらないだろうと思ったところが変わっているのでハマった。
- Python2系のとき
b64encodeはunicode文字列をそのまま入れてOK
import base64 x = u"hogehoge" y = base64.b64encode(x)
- Python3系のとき
b64encodeには、bytesを食わせる必要がある
import base64 x = "hogehoge".encode("utf-8") # 何らかの文字コードにエンコード y = base64.b64encode(x)
urllib2
urllib2がなくなっていた。代わりに、urllibを使う。
- Python2系のとき
import urllib2
req = urllib2.Request(url, data=data, headers=headers)
resp = urllib2.urlopen(req)
- Python3系のとき
urllib.requestを使う。
import urllib
req = urllib.request.Request(url, data=data, headers=headers)
resp = urllib.request.urlopen(req)