【问题标题】:2to3 conversion for strings字符串的2to3转换
【发布时间】:2015-12-16 08:49:32
【问题描述】:

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

py3_code_str = convert2to3(py2_code_str)

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

【问题讨论】:

  • 我想最好的解决方法是将字符串写入一个临时文件(在 tempfile 模块的帮助下),应用 2to3 并将文件内容读回您自己编写的编辑器。

标签: python python-3.x python-2to3


【解决方案1】:

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

不过,如果您并不真正关心这一点,也可以(稍作改动)使用 from lib2to3.refactor import RefactoringTool 并继续使用其 refactor_string 方法。

【讨论】:

  • 这是我选择的方法。我在自己的答案中添加了对我有用的内容。
【解决方案2】:

感谢plaes answer

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)

【讨论】:

    【解决方案3】:

    这真的不是 2to3 的用途。

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

    【讨论】:

    • 我正在这样做。但是我的编辑器的用户没有。这就是为什么我需要这样的工具。
    猜你喜欢
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多