gpt4 book ai didi

python - 在内存脚本上使用 2to3

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:16 25 4
gpt4 key购买 nike

我有一个 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 是“”,或者它是多行字符串,则它有效。知道什么可能导致这个简单的案例失败吗?

最佳答案

传入“pass\n”似乎可以使其工作。事实上,任何末尾没有“\n”的单行 python 都会导致解析器失败,例如“1+1”。这可能是由于 python 对空格/缩进的特定敏感性,类似于使用 code.InteractiveInterpreter 实例运行源时格式化代码字符串时需要注意的问题,但我没有深入挖掘。

关于python - 在内存脚本上使用 2to3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30340151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com