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

在终端的同一目录中执行多个.py python脚本?,python,terminal,Python,Terminal,是否有任何方法可以运行位于终端中同一目录中的多个.py文件 例如: 假设我有三个.py文件 x.py y.py z.py 我已将这些文件保存在abc目录中 在终端中,我将同样执行x.py python ~/abc/x.py 要运行y.py和z.py,必须重复这个过程 有没有办法同时运行所有三个脚本?还是什么捷径?是否比打开多个终端窗口节省时间 谢谢假设bash: for i in x y z; do python ~/abc/$i.py & done 此循环在字符串“x”、“y”和

是否有任何方法可以运行位于终端中同一目录中的多个.py文件

例如:

假设我有三个.py文件

x.py
y.py
z.py
我已将这些文件保存在abc目录中

在终端中,我将同样执行x.py

python ~/abc/x.py
要运行y.py和z.py,必须重复这个过程

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

谢谢

假设bash:

for i in x y z; do python ~/abc/$i.py & done
此循环在字符串“x”、“y”和“z”上迭代。每次迭代变量
$i
都是其中的一个。所以在第一次迭代中,
$i
x
,所以
~/abc/$i.py
~/abc/x.py
。第二次迭代是相同的,只使用y,第三次
$i
x

所以,bash实际上是这样做的

python ~/abc/x.py &
python ~/abc/y.py &
python ~/abc/z.py &
这就是你想要的


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

我经常使用类似(在bash中)的命令


当我有许多python文件并且想要运行所有这些文件时,我会使用THO。

既然其他人给了您shell解决方案,让我推荐一个python解决方案:

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()
这是Python3.3代码,在Python2.7中可能需要做一些不同的事情

例如,如果定义了
x.f
y.f
z.f

def f(x):
    print(x)
然后,上述代码将输出:

一,

二,

三,

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

bash文件

ls *.py | xargs -I{} sh -c "echo {}; python {}"
您可以使用命令
ls*.py

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

使用命令
python{}

自动将{}替换为.py文件

对不起,我根本不是程序员。。。你能告诉我i美元是多少吗?我在终端上试过这样的命令:对于*.py中的文件,做python$我做了,但什么都没有发生……只是python帮助菜单……你需要对~/abc/*.py中的文件做
;做python$i;完成
对我来说,在我将
文件
更改为
I
之后,这非常有效,因此
对于我来说,单位为$(ls*.py)
是的,你是对的。我现在已经在答案中更改了它。谢谢。虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决这个问题的附加上下文将提高答案的长期价值。
x.py
y.py
z.py