如何从另一个Python脚本中运行Python脚本?

时间:2015-03-12 20:03:53

标签: python linux unix

我目前正在使用子进程在我当前的Python中运行Python脚本,但它一直给我一个错误:

for dir in os.listdir(os.path.join(DIR2,dirname)):
    temp = os.path.join(os.path.join(DIR2,dirname),dir)
    files = [os.path.join(temp, f) for f in os.listdir(temp) if f.endswith("json")]
    for lists in files:
        subprocess.Popen(["python", DIR4, os.path.join(temp,lists)])

以上就是我目前正在使用的内容。 DIR4是我想要运行的python的路径。

问题是,我想运行的python一次只能获取一个文件。 但是,这个子进程看起来好像试图在ONCE上执行ALL。

我希望一次运行一个,而不是ONCE的ALL。 因为它在ONCE运行ALL,我想要运行的python不能像它那样工作..

我需要做些什么来改变这个?

2 个答案:

答案 0 :(得分:0)

如果你想先等待子进程终止,那么在继续之前,我认为你可以使用Popen.wait():

...
p = subprocess.Popen(["python", DIR4, os.path.join(temp,lists)])
p.wait()
...

答案 1 :(得分:0)

要实际执行您所要求的内容,而不是通过子进程一起破解它,您可以使用exec,它允许您使用自己提供的全局变量和本地变量运行python代码。

在旧版本的Python(意思是前3版)中,您可以使用execfile to achieve the same thing