在终端的同一目录中执行多个.py python脚本?
是否有任何方法可以运行位于终端中同一目录中的多个.py文件 例如: 假设我有三个.py文件在终端的同一目录中执行多个.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”和
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