15
votes

What is the best way to run all Python files in a directory?

python *.py

only executes one file. Writing one line per file in a shell script (or make file) seems cumbersome. I need this b/c I have a series of small matplotlib scripts each creating a png file and want to create all of the images at once.

PS: I'm using the bash shell.

2

2 Answers

34
votes

bash has loops:

for f in *.py; do python "$f"; done
18
votes

An alternative is to use xargs. That allows you to parallelise execution, which is useful on today's multi-core processors.

ls *.py|xargs -n 1 -P 3 python

The -n 1 makes xargs give each process only one of the arguments, while the -P 3 will make xargs run up to three processes in parallel.