什么';将Python2代码更改为与Python2和Python3兼容的代码是一种很好的自动化方法吗?

什么';将Python2代码更改为与Python2和Python3兼容的代码是一种很好的自动化方法吗?,python,python-3.x,python-2to3,Python,Python 3.x,Python 2to3,我正在修改一些Python 2代码,使之与Python 2和Python 3兼容。翻译工具可以很好地将Python 2代码转换为不一定与Python 2代码兼容的Python 3代码。例如,它如何将x.iteritems()转换为x.items()。我可能需要的是将x.iteritems()自动转换为list(x.items()),等等,以用于所有Python代码 如何做到这一点?使用该模块,它将为您提供您想要的东西!完成转换后,可以用本机python 3替换六个方法。“我可能需要的是将x.it

我正在修改一些Python 2代码,使之与Python 2和Python 3兼容。翻译工具可以很好地将Python 2代码转换为不一定与Python 2代码兼容的Python 3代码。例如,它如何将
x.iteritems()
转换为
x.items()
。我可能需要的是将
x.iteritems()
自动转换为
list(x.items())
,等等,以用于所有Python代码


如何做到这一点?

使用该模块,它将为您提供您想要的东西!完成转换后,可以用本机python 3替换
六个
方法。

“我可能需要的是将x.iteritems()自动转换为list(x.items())”嗯,但这并不等同于。。。不管怎样,你可能想看看@juanpa.arrivillaga是的,这就是重点。我需要将仅与Python2兼容的代码自动更改为与Python2和Python3兼容。工具
2to3
似乎转换了代码,使其仅与Python 3兼容。
x.items()
如何与Python 2不兼容?@chepner在Python 2中
x.items()
返回(键、值)对的列表,而在Python 3中
x.items()
是一个必须迭代的
itemview
对象,因此,需要使用
list(x.items())
替换Python2中的
x.items()
;您有
iteritems()
。当在2和3下运行时,您建议的更改会产生相同的语义,但仍然会更改原始的语义。如果不使用
2to3
,就没有一种方法可以同时在2和3下保留您的原始语义。嘿,谢谢。看起来这可能是一个解决方案。但是,我确实需要一个工具来将现有的Python 2代码转换为具有
six
模块的代码。我在寻找一个自动化的解决方案。啊,我明白了。我认为对于
six
来说,没有一个相当于
2to3
。在这些情况下,尽管听起来很困难,但我确保每件事都有单元测试,在CI期间将测试设置为在python 2和python 3上运行,然后在适当的地方开始插入
six