将应用程序从python2.7移植到python3.7后出现字节字符串问题
我将我的应用程序从Python2.7移植到Python3.7。移植之后,我面临这个问题。我的字符串“字符串以字节为单位”转换为b“字符串以字节为单位”。我需要将此代码放在任何地方:将应用程序从python2.7移植到python3.7后出现字节字符串问题,python,python-3.x,porting,Python,Python 3.x,Porting,我将我的应用程序从Python2.7移植到Python3.7。移植之后,我面临这个问题。我的字符串“字符串以字节为单位”转换为b“字符串以字节为单位”。我需要将此代码放在任何地方: if (isinstance(secret_val, bytes)): secret_val = secret_val.decode() if (isinstance(response_data, str)): response_data = str.encode(response_data)
if (isinstance(secret_val, bytes)):
secret_val = secret_val.decode()
if (isinstance(response_data, str)):
response_data = str.encode(response_data)
我知道Python3.7中的字符串格式发生了变化。这可能是什么原因
这是Python 2.7代码:
输出: (“{0}是字节”,“VIjzLQfdLHQqF+LPPVDlj5uFA/ODFKfL9KQCfIufbRvAGXjS”) 2019-08-05 08:38:30351-34(uwsgiwworker5core0)-信息-信用服务。保存秘密(108)-保存秘密::保存在保险库中:秘密值::str vijzlqfdlhqff+LPPVDlj5uFA/odfkfl9kqcfbrvagxjs 注意:字节字符串看起来就像一个字符串 这是Python 3.7代码:
输出: 2019-08-05 07:36:14324-39(b'uWSGIWorker5Core0')-信息-信用服务-保存秘密(104)-保存秘密::保存在金库中:秘密值::str b'u5ozxnntbopomkbievxu3dmpzfm8kensdss+zOS+vh3R' 注意:字节字符串与b'string'一起出现 在Python 3.7中,以下行失败,因为数据包含secret_val,即字节:
payload = json.dumps(data)
TypeError:bytes类型的对象不可JSON序列化
要消除此错误,我需要执行以下操作:
但是,在Python2.7中,同样的行也可以正常工作,它还包含字节 如何处理这个案件 我的应用程序是一个凭证服务,它在许多值中包含字节字符串 我是否必须到处检查,如果它的字节执行解码,否则继续
还有其他选择吗 “Python 3.0中的新功能”文档包含一个章节:希望,我已经用代码以更好的方式提出了我的问题。@Malar Kandasamy是的,祝你好运
log.info('save_secret:: saving in vault: secret_val:: str ' + str(secret_val))
payload = json.dumps(data)
if isinstance(secret_val, bytes):
print("{0} is bytes", secret_val)