如何在python上的不同文件夹中运行多个脚本
我必须运行大量的书面脚本,我想让它自动化。我有几个文件夹(P1,P2,…,PN),其中有一个脚本(test1,test2,…,testN),我需要运行所有这些,但是我自己一个一个地运行,我没有太多时间 我尝试了子流程: 其中P1_T1为:如何在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需要一个参数列表,那么呢
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(根,文件)让我们。