【问题标题】:Importing and Testing variable from every .py file in directory从目录中的每个 .py 文件导入和测试变量
【发布时间】:2020-06-21 18:23:05
【问题描述】:

我试图从目录中的每个 python 文件中导入和测试变量“builtin”。它应该遍历每个文件并测试变量,如果变量设置为 true,那么它将文件名添加到列表中。如果文件没有“内置”变量,它也应该能够工作。目前,我的代码正在将每个文件添加到列表中,包括带有和不带有变量的文件。我怎样才能解决这个问题?这是我的代码:

def getDefaults(folder):
    if folder == "plugins":
        files = os.listdir("plugins")
        defaults = []
        for file in files:
            try:
                exec("from plugins." + file[:-3] + " import builtin")
                if file[:-3].builtin == "True":
                    defaults.append(file)
            except:
                pass
        return defaults

【问题讨论】:

    标签: python variables import


    【解决方案1】:

    保留一个全局变量并将该变量分配给 exec 语句中的内置变量。

    import os
    
    cur_builtin = None
    def getDefaults(folder):
        if folder == "plugins":
            files = os.listdir("plugins")
            defaults = []
            for file in files:
                try:
                    exec("global cur_builtin; from plugins." + file[:-3] + " import builtin; cur_builtin = builtin")
                    if cur_builtin == "True":
                        defaults.append(file)
                except:
                    pass
            return defaults
    
    
    print (getDefaults("plugins"))
    

    测试-

    # code in filter_builtin.py
    mkdir plugins
    cd plugins
    echo builtin = '"True"' >> sample1.py
    echo builtin = '"True"' >> sample2.py
    echo builtin = '"True"' >> sample3.py
    echo builtin = '"False"' >> sample4.py
    cd ..
    python filter_builtin.py
    

    【讨论】:

    • 它仍然包括所有没有变量的文件
    • 您是否尝试打印 getDefaults("plugins")?你还能看到所有的文件名吗?我在发布之前测试了这段代码。
    • 没关系,对不起。使用 getDefaults 的代码出错。谢谢
    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 2018-10-09
    • 2018-12-06
    • 1970-01-01
    • 2014-05-22
    • 2022-06-28
    • 1970-01-01
    • 2018-08-22
    相关资源
    最近更新 更多