1
我有一個Python 2.7格式的腳本數據庫。在我的Python 3應用程序中加載後,我想將它們轉換爲Python 3格式,而無需將每個腳本寫入文件。我嘗試了以下內容:在內存中使用2to3腳本
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是「」,或者如果它是一個多字符串。任何想法可能導致簡單案例失敗?
我終於找到了,但忘了我發佈了這個。你是對的,\ n是問題,即使在最後一行也必須存在。我已標記你的答案。 – Schollii
酷 - 這是您爲內存中轉換編寫的有用的小實用程序函數。 – bc19