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

标签 python automation

我有一个 python 文件,它是一个集合 functionsclassesmethods 等。我需要解析它,以便我可以提取指定的函数,包括我需要覆盖它们的方法

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

最佳答案

您可以使用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() 逐行获取对象的源代码(例如,如果您只需要 header )。

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

关于python - 我可以将选定的 python 函数和类方法从一个文件复制到另一个文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45013026/

相关文章:

linux - 使用 sudo 访问附加到文件

selenium - driver.navigate().to() 如何在 Selenium 类中的 selenium 上工作?意思是navigate()和to()是什么?

python - 如何使用 Selenium webdriver 单击悬停菜单中的链接?

python - 如何在 Debian/Ubuntu 中为我的 python 应用程序定义图标?

python - keras中的反向词嵌入 - python

python - 在共享虚拟主机服务器上使用 wsgi 和 virtualenv 部署 Django 项目,无需 root 访问权限

c# - 在数据透视表无法削减并且数据来自许多地方的情况下,如何自动化地按计划进行报告?

python - 嵌套字典中的多个嵌套字典

grails - 如何在不使用 UI 的情况下自动执行 Java 应用程序测试?

java - Sikuli 与 TeamCity 集成?