将python2脚本中的python对象传递给python3脚本

2024-09-29 17:18:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一个问题,我当前的流量生成器:Warp17生成了只与python2兼容的python代码。我们将所有其他的东西都转移到python3上,所以我创建了一个cli工具来包装我们的warp17api。有没有比打印输出并将其加载到json中更好的方法来传递来自下标的信息?你知道吗

#!/usr/bin/python

import python2_api

if __name__ == "__main__":
  do_some_argparse()
  result = dict(run_some_code_on_args())
  print(result)

def run_warp_cli(*args):
  result = subprocess.Popen('warp_cli', args)
  return json.loads(result)

基本上我就是这么做的。我很好奇是否有什么有趣的方法来避免这样做,并得到一个实际的python字典对象等


Tags: 工具方法run代码jsoncliargssome
1条回答
网友
1楼 · 发布于 2024-09-29 17:18:59

在python2和python3之间,字典的二进制表示形式,实际上是对象的二进制表示形式已经发生了很大的变化。这意味着您将无法在Python版本之间直接使用对象。有必要将某种形式的序列化转换为双方都能接受的格式。你知道吗

您使用的JSON格式符合这个标准。我建议坚持使用它,因为它灵活、可读性强,而且非常通用。你知道吗

如果空间成为一个问题,你可以考虑酸洗作为一个替代品,但我不建议它作为第一选择。虽然^{}可以很好地理解Python 2数据,但是在Python版本之间对数据类型的不同解释,特别是bytesUnpickling a python 2 object with python 3时,需要记住许多注意事项

这里有一个资源可以帮助您解决在python3端取消点击时出现的一些常见错误:TypeError: a bytes-like object is required, not 'str' when opening Python 2 Pickle file in Python 3

相关问题 更多 >

    热门问题