24

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.

the wolf
  • 34,510
  • 13
  • 53
  • 71

2 Answers2

42

bash has loops:

for f in *.py; do python "$f"; done
Ignacio Vazquez-Abrams
  • 776,304
  • 153
  • 1,341
  • 1,358
Cat Plus Plus
  • 125,936
  • 27
  • 200
  • 224
21

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.

Erik Forsberg
  • 4,819
  • 3
  • 27
  • 31