从for循环导入和调用新文件模块

时间:2019-06-18 00:02:27

标签: python

我有一个类似的文件目录。

myScript.py

-项目

----测试

------ test0.py

------ test1.py

------ test2.py

在myScript.py中,我尝试使用for循环遍历项目目录中的文件并运行每个文件的主模块。

import os
from os import listdir
from os.path import isfile, join


def main(project_loc="Test"):
    print('I am main of main')
    current_dir = os.getcwd()
    project_dir = os.path.join(current_dir, 'Projects', project_loc)
    onlyfiles = [f for f in listdir(project_dir) if isfile(join(project_dir, f))]
    count = 0 
    for file in onlyfiles:
        file_name = os.path.join(project_dir, file).rstrip('.py')
        print('File' + str(count), file_name)
        new_module = __import__(file_name)
        #new_module.main()                 #Run module I just imported
        count += 1
    print(modules)

    return


if __name__ == "__main__":
    main()

上面的myScript.py

def main():
    print('I am main of file 0')
    return False


if __name__ == "__main__":
    main()

test0.py以上(其余类似)

导入这三个文件不是一个选择,因为要导入的文件更多。

不是使用其他库的选项。 必须仅使用已经与python一起打包的模块来完成

1 个答案:

答案 0 :(得分:0)

问题在于,正在使用文件的路径作为参数来调用__import__(例如~/directory/Projects/Test/test0)。相反,__import__采用一个name参数,该参数看起来应类似于Projects.Test.test0

现在,要运行所需的脚本,有多种选择。请参阅Run a Python script from another Python script, passing in arguments