Script shell UNIX pour appeler python

J’ai un script python qui fonctionne sur trois fichiers de la manière suivante align.py * .wav * .txt * .TextGrid Cependant, j’ai un répertoire rempli de fichiers que je veux parcourir. L’auteur original suggère de créer un script shell pour parcourir les fichiers. La partie la plus délicate de la boucle est que je dois faire correspondre trois fichiers à la fois avec trois extensions différentes pour que le script s’exécute correctement. Quelqu’un peut-il m’aider à comprendre comment créer un script shell pour parcourir un répertoire de fichiers, en faire correspondre trois en fonction du nom (avec trois extensions différentes) et exécuter le script python sur chaque sortingplet? Merci!

En supposant que vous utilisez bash, voici un one-liner:

for f in *.wav; do align.py $f ${f%\.*}.txt ${f%\.*}.TextGrid; done 

Vous pouvez utiliser glob.glob pour répertorier uniquement les fichiers wav , puis construire le subprocess.Popensubprocess.Popen Appelez comme ceci:

 import glob import os import subprocess for wav_name in glob.glob('*.wav'): basename,ext = os.path.splitext(wav_name) txt_name=basename+'.txt' grid_name=basename+'.TextGrid' proc=subprocess.Popen(['align.py',wav_name,txt_name,grid_name]) proc.communicate()