Я бы хотел извлечь root функции из скрипта python для разделения их на отдельные файлы. Я должен сохранить оригинальное форматирование, комментарии, ets, поэтому стандартные ast
/ astunparse
модули не работают для меня.
Я обнаружил, что python библиотека redbaron , который очень мощный и гибкий. К сожалению, я не знаю, как извлечь только тело функции. Вот что я пробовал до сих пор:
tree = redbaron.RedBaron(code_source)
functions = tree.find_all('DefNode')
for fn in functions:
if fn.indentation != '':
# only interested in root functions
continue
with open('/tmp/%s.py' % fn.name, 'w+') as f:
f.write(fn.dumps())
Для простого ввода, подобного этому:
def foo():
if True:
do_something()
он выдает точно такой же результат (ожидаемое поведение). Я хочу извлечь только тело функции, без имени и параметров и с правильным отступом:
if True:
do_something()
Любая помощь очень ценится.