3

我为嵌入在我的应用程序中的 Python 代码编写了一个基于 Qt 的小型文本编辑器。现在我要切换到 Python 3,我想帮助我的应用程序的用户转换他们的代码。我知道这2to3可以完成大部分文件的转换。但是,我需要即时转换,而无需触及磁盘上的文件。我的意思是:

py3_code_str = convert2to3(py2_code_str)

有人知道如何使用2to3or来实现lib2to3吗?

4

3 回答 3

3

不幸的是,lib2to3没有稳定的界面,这意味着它可能会发生巨大变化。

但是,如果您并不真正关心这一点,则可能(稍作改动)可以使用from lib2to3.refactor import RefactoringTool并继续使用它的refactor_string方法。

于 2015-12-16T09:01:11.877 回答
3

感谢plaes 的回答对我有用:

from lib2to3.refactor import RefactoringTool, get_fixers_from_package
refactoring_tool = RefactoringTool(fixer_names=get_fixers_from_package('lib2to3.fixes'))
node3 = refactoring_tool.refactor_string(text2, 'script')
text3 = str(node3)
于 2015-12-16T12:27:45.457 回答
-1

这真的不是 2to3 的用途。

您应该以与 Python 2 和 3 兼容的方式编写代码。这六个库可以提供帮助。

于 2015-12-16T09:00:31.750 回答