如何在python上的不同文件夹中运行多个脚本

如何在python上的不同文件夹中运行多个脚本,python,subprocess,Python,Subprocess,我必须运行大量的书面脚本,我想让它自动化。我有几个文件夹(P1,P2,…,PN),其中有一个脚本(test1,test2,…,testN),我需要运行所有这些,但是我自己一个一个地运行,我没有太多时间 我尝试了子流程: 其中P1_T1为: for i in range(5): x = i+2*i print(x) P1_T2是: for i in range(5): x = i+3*i print(x) 但是不起作用。Popen需要一个参数列表,那么呢

我必须运行大量的书面脚本,我想让它自动化。我有几个文件夹(P1,P2,…,PN),其中有一个脚本(test1,test2,…,testN),我需要运行所有这些,但是我自己一个一个地运行,我没有太多时间

我尝试了子流程:

其中P1_T1为:

for i in range(5):
    x = i+2*i

    print(x)
P1_T2是:

for i in range(5):
    x = i+3*i
    print(x)

但是不起作用。

Popen
需要一个参数列表,那么呢

导入子流程
从子流程导入Popen
Popen(['python','p1/p1_T1.py'])
时间。睡眠(1)
Popen(['python','p2/p2_T1.py'])

这对你有用吗?有一个很好的教程-

如果你想通过一组目录递归,我建议使用os.walk。此实现应尝试在根目录中的每个文件上运行POpen'python[filename]:

import os
import importlib.util


path = "C:\\SO\\testfolder" # <--- replace this with the path to the folder containing all of your p1, p2, p3, p4 folders.

for root, subdirs, files in os.walk(path):
    for file in files:
        file_path = os.path.join(root, file)
        filename, file_extension = os.path.splitext(file_path)
        if file_extension == ".py":
            print("Now Executing: " + filename + "-----------")
            spec = importlib.util.spec_from_file_location(file, file_path)
            module = importlib.util.module_from_spec(spec)
            spec.loader.exec_module(module)

导入操作系统
导入importlib.util

path=“C:\\SO\\testfolder”#您需要它们同时运行,这就是您所说的“不工作”的意思吗?您所说的“不工作”是什么意思?你有错误吗?如果是,是什么?感谢您的澄清。另外,您不应该手工编写每个
Popen
,而应该使用循环。@aws\u徒弟我不需要同时运行,我只需要逐个运行,但这种方式不会在屏幕上显示任何结果,这只是一个测试,在我的真实代码中,我有一个.txt文件作为输出,并且没有使用此子流程代码生成。不,这不起作用。没有错误,但没有结果,不会在屏幕上显示任何内容。就像在照片中,我有另一种方法可以在没有POpen的情况下从文件夹中运行脚本?这段代码不起作用,我得到了错误:raise TypeError(“bufsize必须是整数”)TypeError:bufsize必须是整数我正在研究使用importlib来运行它,给我一点时间来测试它我弄清楚是什么,它丢失了[];这种方式运行时不会出现错误,但不会显示结果:导入子进程导入os path='C:/Users/Familia/OneDrive-Universitádi Cagliari/PhD/simpegmaster/Notebook/Testes_Jenny/TEMFAST/TEMFAST Work/Castanheira/Teste'对于根、子进程、os.walk中的文件(路径):对于文件中的文件:subprocess.run(['python',os.path.join(根,文件)让我们。