我有一个python文件,它是一个集合functions
,classes
带有methods
等等。我需要解析它,以便我可以提取出指定的functions
和classes
包括我为了超越它们而需要的methods
。
是否有parser
能够很好地解析python
代码以满足此类要求?内置的ast
模块会帮助我吗?
例如:
输入:Main.py
def f_one():
"""
"""
pass
class c_one():
"""
"""
def m_one():
"""
"""
pass
def m_two():
"""
"""
pass
def m_three():
"""
"""
pass
class c_two():
def m_one():
"""
"""
pass
目标只是复制f_one
,c_one
和m_one
,更一般地说是我指定的代码(函数,类等)。
输出:Copy.py
def f_one():
"""
"""
pass
class c_one():
"""
"""
def m_one():
"""
"""
pass
答案 0 :(得分:1)
您只需要导入它:
from Main import f_one, c_one
c = c_one()
c.m_two()
答案 1 :(得分:1)
您可以使用inspect.getsource()
import inspect
import Main
objects = [Main.f_one, Main.c_one]
copy = ''
#copy objects
for obj in objects:
copy += inspect.getsource(obj)
copy += '\n'
with open('Copy.py', 'w') as out:
out.write(copy)
这会将f_one
和c_one
的完整源代码写入Copy.py.如果您只想要c_one
的部分内容,则必须分别检查您想要的所有成员(例如inspect.getsource(Main.c_one.m_one)
)并手动组装它们。
您还可以使用inspect.getsourcelines()
逐行获取对象的源代码(例如,如果您只需要标题)。
请注意,对于从编译文件导入,这显然是不可能的。