我有一个 Python 2.7 格式的脚本数据库。在我的 Python 3 应用程序中加载后,我想将它们转换为 Python 3 格式,而无需将每个脚本都写入文件。我尝试了以下方法:
from lib2to3 import refactor
def convert_2to3(py_script):
avail_fixes = refactor.get_fixers_from_package('lib2to3.fixes')
py_converter = refactor.RefactoringTool(avail_fixes)
ast = py_converter.refactor_string(py_script, '<script>')
return str(ast)
但是有时这会失败;例如,如果 py_script 只是“通过”。错误很神秘:
lib2to3.pgen2.parse.ParseError: bad input: type=0, value='', context=('\n', (2, 0))
如果 py_script 是“”,或者它是多行字符串,它就可以工作。知道什么可能导致简单案例失败吗?