在终端的同一目录中执行多个.py python脚本?

时间:2013-06-30 18:39:33

标签: python terminal

有没有办法运行位于终端中同一目录下的多个.py文件?

示例:

我们说我有三个.py文件

x.py
y.py
z.py

我已将这些文件保存在目录abc

在终端中,我会按原样执行x.py

python ~/abc/x.py

并且必须重复这一点才能运行y.py和z.py

有没有办法同时运行所有三个脚本?还是有些捷径?比打开多个终端窗口节省时间吗?

由于

4 个答案:

答案 0 :(得分:1)

假设bash:

for i in x y z; do python ~/abc/$i.py & done

该循环遍历字符串“x”,“y”和“z”。每次迭代变量$i都是另一个。因此,在第一次迭代中,$ix,因此~/abc/$i.py~/abc/x.py。第二次迭代是相同的,只有y,而第三次$ix

所以bash实际上是

python ~/abc/x.py &
python ~/abc/y.py &
python ~/abc/z.py &

这就是你要求的。

&使其在后台运行。您可以对您调用的任何命令执行此操作。

答案 1 :(得分:1)

我经常使用像(在bash中)的东西

for file in $( ls *.py )
  do
    python $file
  done

当我有许多python文件并希望运行所有这些文件时,我会使用它。

答案 2 :(得分:0)

由于其他人已经给你shell解决方案,让我提出一个pythonic解决方案:

from multiprocessing import Process

import x
import y
import z

# Assuming you have a main function f in each module

p1 = Process(target=x.f, args = (1,)) # or whatever args
p1.start()
p2 = Process(target=y.f, args = (2,))
p2.start()
p3 = Process(target=z.f, args = (3,))
p3.start()

这是Python 3.3代码,您可能必须在Python 2.7中稍微改变一下。

例如,如果x.fy.fz.f都已定义

def f(x):
    print(x)

然后上面的代码将输出:

  

1

     

2

     

3

可能,但不一定,按顺序。

答案 3 :(得分:0)

bash文件

ls *.py | xargs -I{} sh -c "echo {}; python {}"

您可以使用命令ls *.py

获取当前目录中的所有.py文件。

并使用xargs -I从标准输入执行

使用命令sh -cpython {}中的目录中运行所有.py  自动将{}替换为.py文件