我有一个类似的文件目录。
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一起打包的模块来完成
答案 0 :(得分:0)
问题在于,正在使用文件的路径作为参数来调用__import__
(例如~/directory/Projects/Test/test0
)。相反,__import__
采用一个name
参数,该参数看起来应类似于Projects.Test.test0
。
现在,要运行所需的脚本,有多种选择。请参阅Run a Python script from another Python script, passing in arguments