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

时间:2017-07-10 13:13:31

标签: python automation

我有一个python文件,它是一个集合functionsclasses带有methods等等。我需要解析它,以便我可以提取出指定的functionsclasses包括我为了超越它们而需要的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_onec_onem_one,更一般地说是我指定的代码(函数,类等)。

输出:Copy.py

def f_one():
    """
    """
    pass

class c_one():
    """
    """
    def m_one():
    """
    """
    pass

2 个答案:

答案 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_onec_one的完整源代码写入Copy.py.如果您只想要c_one的部分内容,则必须分别检查您想要的所有成员(例如inspect.getsource(Main.c_one.m_one))并手动组装它们。

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

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