我有一个 python 文件,它是一个集合 functions
、classes
和 methods
等。我需要解析它,以便我可以提取指定的函数
和类
,包括我需要覆盖它们的方法
。
有没有一个解析器
可以很好地解析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
最佳答案
您可以使用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()
逐行获取对象的源代码(例如,如果您只需要 header )。
请注意,这对于从编译文件导入显然是不可能的。
关于python - 我可以将选定的 python 函数和类方法从一个文件复制到另一个文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45013026/