如何在一个接一个的文件夹中运行多个python文件

问题描述:

我有大约20个python文件。如何在一个接一个的文件夹中运行多个python文件

我每次运行在终端这些文件这种形式陆续:

python a.py 
python b.py 
python c.py 
python d.py 
python e.py 
python f.py 
python g.py 
. 
. 
. 

(我已经提供了一般的文件名在这里)

这个过程需要大量的时间。

是否有可能通过任何脚本一个接一个地运行这些文件..?

如果可能,那么如何..?

请提供代码,如果可能的...

我都挺过来了一些站点,使用bash脚本,我们可以做到这一点就知道..

我不知道如何实现它。

如果你可以建议任何其他方法,即使这将是有益的。

编辑

,我需要生成使用nosetests每个文件报告。

我正在面对的鼻测问题是,它创建了一个名为results.html的HTML文件。

每次创建报告时,最新的HTML文件都会替换旧的HTML文件。因为名字相同。

所以我现在正在做的是,每次我为Python文件运行nosetests时重命名报告。运行第二个文件nosetests,被生成的报告,并将其重命名..如此下去......

如果有人能告诉我怎样才能解决这个问题,这将是有益的..

我的工作在Ubuntu 14.04

+0

你有搜索如何庆典脚本的作品? – Aurel

+0

你在寻找'bash loop'吗? –

+0

^^否。不是您提到的那个特定问题的重复。 (它回答了有关并行运行python脚本的问题。)虽然这个问题肯定会问到。 – anishsane

要动态地运行在一个给定的文件夹您的文件夹中的所有Python脚本,你可以运行bash脚本,如:

#!/bin/bash 

for py_file in $(find $YOUR_FOLDER -name *.py) 
do 
    python $py_file 
done 
+0

我也可以用nosetest使用此方法生成报告。?如果是,那么如何? – Karthik

+1

只需用'nosetest $ py_file --with-html-out'替换'python $ py_file'行即可。 – mvelay

+0

它为所有测试生成'results.html'文件。这个名字很常见。所以最后我只得到1个html文件。我需要的是每个html文件的单独名称。我怎样才能做到这一点 ? – Karthik

你可以使用一个简单的bash脚本,将执行命令的一个又一个:如果你的脚本是为了在多个平台上,我强烈建议您精确的Python版本使用

#!/bin/bash 
python a.py 
python b.py 
python c.py 
python d.py 
python e.py 
python f.py 
python g.py 
. 
. 
. 

执行(python2python3)。

编辑:如果您需要执行文件夹中的所有python脚本,最好使用for循环,就像在他的答案中建议的massiou一样。

+0

如果我需要使用nosetest生成测试用例报告怎么办?我能以同样的方式做到吗?! '''''''''''''''''''''在bash脚本中'''''''''可以测试一个--with-html-out''nosetest b --with-html-out''nosetest c --with-html- – Karthik

+1

只需用'nosetest a.py --with-html-out'替换'python a.py'等。您可以添加您在控制台中使用的任何命令行。 – Aurel

+0

它为所有测试生成results.html文件。这个名字很常见。所以最后我只得到1个HTML文件。我需要的是每个html文件的单独名称。我怎样才能做到这一点 ? – Karthik

如果你希望他们在平行跑了有在这个问题上的一些有用的信息How do you run multiple programs in parallel from a bash script?

你的命令应该是:

python a.py & python b.py & python c.py .... 

如果你希望他们跑了一个又一个,然后更换&与;

python a.py;python b.py;python c.py ... 

希望它有帮助!

您可以使用bash通配符

创建示例文件

for f in test_python{1..9}.py; do echo "print __file__" > $f; done 

文件索引

ls test* 

test_python1.py test_python2.py test_python3.py test_python4.py test_python5.py test_python6.py test_python7.py test_python8.py test_python9.py

所需顺序运行它们:

for f in test_python{1..9}.py; do python $f ; done 
+0

我的测试文件与问题中的不完全相同。名字完全不同。例如:'audio.py','playback.py','controls.py'等等 – Karthik

+0

你可以制作符号链接ln -s playback.py test_python1.py然后运行test_python –