有没有办法运行位于终端中同一目录下的多个.py文件?
示例:
我们说我有三个.py文件
x.py
y.py
z.py
我已将这些文件保存在目录abc
中在终端中,我会按原样执行x.py
python ~/abc/x.py
并且必须重复这一点才能运行y.py和z.py
有没有办法同时运行所有三个脚本?还是有些捷径?比打开多个终端窗口节省时间吗?
由于
答案 0 :(得分:1)
假设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 &
这就是你要求的。
&
使其在后台运行。您可以对您调用的任何命令执行此操作。
答案 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.f
,y.f
和z.f
都已定义
def f(x):
print(x)
然后上面的代码将输出:
1
2
3
可能,但不一定,按顺序。
答案 3 :(得分:0)
bash文件
ls *.py | xargs -I{} sh -c "echo {}; python {}"
您可以使用命令ls *.py
并使用xargs -I
从标准输入执行
使用命令sh -c
在python {}
中的目录中运行所有.py
自动将{}替换为.py文件