検索

ホームページ  >  に質問  >  本文

如何让base64在python2和python3都运行通过

args = [1,2,3,4]
text = json.dumps(args)
query = base64.b64encode(text)
auth = hashlib.md5(query).hexdigest()
print(auth)

这段代码在python2.7下面通过,但是python3.5会报错:
TypeError: 'str' does not support the buffer interface

更改为这样以后,python3可以通过了

args = [1,2,3,4]
text = json.dumps(args)
query = base64.b64encode(bytes(text, 'utf-8'), )
auth = hashlib.md5(query).hexdigest()
print(auth)

但是python2又会报错:TypeError: str() takes at most 1 argument (2 given)

该怎样修改才能使代码在python2和python3都运行通过呢?


高洛峰高洛峰2957日前839

全員に返信(2)返信します

  • 代言

    代言2016-11-09 14:10:41

    args = [1,2,3,4]
    text = json.dumps(args)
    
    #这里添加了一个bytearray类型的变量temp
    temp = bytearray(text, encoding='ascii')
    
    query = base64.b64encode(temp)
    auth = hashlib.md5(query).hexdigest()
    print(auth)


    返事
    0
  • 三叔

    三叔2016-11-09 14:10:28

    import base64, json, hashlib
    
    args = [1,2,3,4]
    text = json.dumps(args)
    try:
        text = bytes(text, 'utf-8')
    except:
        pass
    query = base64.b64encode(text)
    auth = hashlib.md5(query).hexdigest()
    print(auth)


    返事
    0
  • キャンセル返事