如何让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都运行通过呢?

阅读 10.2k
3 个回答
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)
import base64, json, hashlib, sys

args = [1, 2, 3, 4]
text = json.dumps(args)
if sys.version_info > (3, 0):
    text = bytes(text, 'utf-8')
query = base64.b64encode(text)
auth = hashlib.md5(query).hexdigest()
print(auth)
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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏