Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将应用程序从python2.7移植到python3.7后出现字节字符串问题_Python_Python 3.x_Porting - Fatal编程技术网

将应用程序从python2.7移植到python3.7后出现字节字符串问题

将应用程序从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)

我将我的应用程序从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)
我知道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)