我可以跨选定的python函数和类方法从一个文件复制到另一个文件吗?

我可以跨选定的python函数和类方法从一个文件复制到另一个文件吗?,python,automation,Python,Automation,我有一个python文件,它是一个集合函数,类和方法等。我需要解析它,这样我就可以提取出指定的函数和类,包括我需要的方法 是否有一个解析器可以很好地解析python代码来满足这种需求?内置的ast模块能帮助我吗 例如: 输入:Main.py def f_one(): """ """ pass class c_one(): """ """ def m_one(): """ """ pass def m_two():

我有一个python文件,它是一个集合
函数
方法
等。我需要解析它,这样我就可以提取出指定的
函数
,包括我需要的
方法

是否有一个
解析器
可以很好地解析
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

您只需导入它:

from Main import f_one, c_one

c = c_one()
c.m_two()

您只需导入它:

from Main import f_one, c_one

c = c_one()
c.m_two()

您可以使用
inspect.getsource()

这会将
f_one
c_one
的完整源代码写入Copy.py。如果您只需要
c_one
的一部分,则必须分别检查您需要的所有成员(例如
inspect.getsource(Main.c_one.m_one)
)并手动组装它们

您还可以使用
inspect.getsourcelines()
逐行获取对象的源代码(例如,如果您只需要标题)


请注意,对于从编译文件导入,这显然是不可能的。

您可以使用
inspect.getsource()

这会将
f_one
c_one
的完整源代码写入Copy.py。如果您只需要
c_one
的一部分,则必须分别检查您需要的所有成员(例如
inspect.getsource(Main.c_one.m_one)
)并手动组装它们

您还可以使用
inspect.getsourcelines()
逐行获取对象的源代码(例如,如果您只需要标题)


请注意,对于从编译文件导入,这显然是不可能的。

您的意思是
导入
?不,我只是尝试自动执行通常执行的复制粘贴工作。我刚才描述了如何复制粘贴:-),所以您只想提取Main.py中每个类和函数的名称?我将使用。如果您只想导入一个类,那么方法可能会有所帮助。//编辑:如果您只想将一个函数从
main.py
传递到另一个函数
foo()
,只需执行
foo(c_one.m_one)
。您所说的一切都不能说明不使用
import
的原因。如果你想在另一个文件中使用
f_one
c_one
,你可以从主导入f_one,c_one执行
。你的意思是
import
?不,我只是在尝试自动执行我通常执行的复制粘贴工作。我刚才描述了如何复制粘贴:-),所以您只想提取Main.py中每个类和函数的名称?我将使用。如果您只想导入一个类,那么方法可能会有所帮助。//编辑:如果您只想将一个函数从
main.py
传递到另一个函数
foo()
,只需执行
foo(c_one.m_one)
。您所说的一切都不能说明不使用
import
的原因。如果要在另一个文件中使用
f_one
c_one
,可以从主导入f_one、c_one
执行