【问题标题】:Getting all def functions of a file from a string containing the file name从包含文件名的字符串中获取文件的所有 def 函数
【发布时间】:2015-05-08 18:48:46
【问题描述】:

我需要从文件夹中的 .py 文件中获取所有 def 函数。 我有这个从文件夹中获取文件名。

import Modules

path = os.path.dirname(os.path.realpath(__file__)) + "/Modules/"

modules=[]

os.chdir(path)
for file in glob.glob("*.py"):
    if file != "__init__.py":
        file = file.replace(".py", "")
        Module = "Modules." + file

这可以很好地获取所有文件名并从中删除 .py 问题是当我尝试使用它获取所有功能时

for i in dir(Module):
        if i[0] != "_":
            print i

它打印出这样的东西

capitalize
center
count
decode
encode

我认为这通常是“字符串”的函数。我打印出模块并返回返回的 Modules.test,并将其放入函数中

 for i in dir(Modules.test):
        if i[0] != "_":
            print i

它确实返回了“test”(这是我在文件中的 def 函数的名称),我尝试使用 this 将字符串转换为原始字符串,但它不起作用。所以我只是想知道我将如何做到这一点

【问题讨论】:

    标签: python string list function


    【解决方案1】:
    for fpath in glob.glob("*.py"):
        if not fpath.endswith("__init__.py"): #recall glob returns full path
            with open(fpath) as f:
                 print os.path.basename(fpath)
                 print "  "+"\n  ".join(re.findall("def (.*):",f.read()))
    

    也许……我猜?

    【讨论】:

    • 太棒了,工作得很好,除非你知道如何将它们放入一个数组中,这样我就可以执行 Function[1] 之类的操作
    • 那么我该如何调用它,以便获得它找到的第一个函数
    • 没关系,我刚刚为 Function_list 中的单词做了 Function_list = Functions.split():Function_array += [word]
    猜你喜欢
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2022-07-19
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多